百度2020校招Web前端工程师笔试卷(第二批)(20~23)

发布时间 2023-03-26 18:49:14作者: 垂序葎草


21.

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style>
       .checkgroup .item{
    height: 42px;
    line-height: 42px;
    padding: 0 10px;
    margin: 10px 0;
    border: 1px solid #c7c7c7;
    border-radius: 6px;
}
.checkgroup.radius .item{
    border-radius: 21px;
}
.checkgroup .item.selected{
    border: 1px solid #08b292;
    background: #08b292;
    color: #ffffff;
}
    </style>
</head>

<body>
    <div id="jsCheckGroup">
        <div class="checkgroup radius">
            <div data-val="a" class="item selected">选项a</div>
            <div data-val="b" class="item">选项b</div>
            <div data-val="c" class="item">选项c</div>
            <div data-val="d" class="item">选项d</div>
        </div>
    </div>
<script type="text/javascript">
    function CheckGroup(renderTo, options, isMultiple) {
        var that = this;
        that.renderTo = renderTo;
        that.options = options;
        that.isMultiple = !!isMultiple;
        that.initHtml();
        that.initEvent();
    }
    CheckGroup.prototype.initHtml = fInitHtml;
    CheckGroup.prototype.initEvent = fInitEvent;
    CheckGroup.prototype.toggleEl = fToggleEl;
    CheckGroup.prototype.isSelected = fIsSelected;
    CheckGroup.prototype.val = fVal;

    function fInitHtml() {
        var that = this;
        // 请补全代码,拼接html字符串
        // var options = [{text: '选项a', value: 'a'}, 
        // {text: '选项b', value: 'b'}, {text: '选项c', value: 'c'}, {text: '选项d', value: 'd'}];
        var sHtml = '';
        for(let i = 0; i < that.options.length; i ++){
            sHtml += `<div data-val="${that.options[i].value}" class="item">${that.options[i].text}</div>`;        
        }
        sHtml = `<div class="checkgroup ${that.isMultiple ? '' : 'radius'}">${sHtml}</div>`;
        console.log('@@@', that);
        that.renderTo.innerHTML = sHtml;
        // 请补全代码,获取checkgroup的dom元素引用
        that.el = document.querySelector('.checkgroup');
    }

    function fInitEvent() {
        var that = this;
        that.el && that.el.addEventListener('click', function (event) {
            var item = event.target;
            item.classList.contains('item') && that.toggleEl(item);
        });
    }

    function fToggleEl(item) {
        // 根据当前是单选还是多选,以及当前元素是否选中,高亮/取消���亮指定的选项dom元素
        var that = this;
        if (that.isSelected(item)) {
            // 请补全代码
            item.className = 'item';

        } else if (that.isMultiple) {
            // 请补全代码
            item.className = 'item selected';
        } else {
            // 请补全代码
            let select = document.querySelector('.selected');
            if(select) select.className = 'item';
            item.className = 'item selected';
        }
    }

    function fIsSelected(item) {
        // 请补全代码,判断item是否选中
        return item.className.includes('selected');
    }
    function fVal(values) {
        var that = this;
        if (arguments.length === 0) {
            // 请补全代码,获取高亮的选项元素
            var items = document.querySelectorAll('.selected');
            // 请补全代码,获取高亮的选项元素的data-val
            var result = [];
            for(let i = 0; i < items.length; i ++){
                result.push(items[i].getAttribute('data-val'));
            }
            return result;
        }
        console.log('@@@', values);
        !that.isMultiple && values.length > 1 && (values.length = 1);
        // 请补全代码,获取所有的选项元素
        var items = document.querySelectorAll('.item');
        // 请补全代码,在指定元素上加上高亮的class
        for(let i = 0; i < items.length; i ++){
            items[i].className = values.includes(items[i].getAttribute('data-val')) ? 'item selected' : 'item';
        }
    }
</script>
</body>

</html>

22.最小值

思路:
在满足题目的条件下,由m,n中较小的那个独自显小时,a+b最小
证明:
(n−a)(m−b)
=nm−am−bn+ab
=nm−am−bm+bm−bn+ab
=(n−a−b)m+b(m−n+a)
≥(n−a−b)m=[n−(a+b)]m
代码:

#include <climits>
#include <iostream>
using namespace std;

int main() {
    long long n, m, k;
    while (cin >> n >> m >> k) { // 注意 while 处理多个 case
        
        if(n > m) swap(n, m);
        long long sum = 0;
        while((n - sum) * m > k){
            sum ++;
        }
        printf("%lld", sum);
    }
}
// 64 位输出请用 printf("%lld")

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
struct Node{
    int len;
    int end;
}node[200100];
bool tmp(const Node a, const Node b){
    return a.end < b.end;
}
int main() {
    int t;
    cin >>t;
    while (t --) { // 注意 while 处理多个 case
        int n;
        cin >> n; 
        for(int i = 0; i < n; i ++){
            cin >> node[i].len >> node[i].end;
        }
        sort(node, node + n, tmp);
        int ans = 0;
        bool flag = true;
        for(int i = 0; i < n; i ++){
            ans += node[i].len;
            if(ans > node[i].end){
                flag = false;
                break;
            }
        }
        if(flag) cout << "Yes" << endl;
        else cout << "No" << endl;
    }
}
// 64 位输出请用 printf("%lld")