9.18雷火笔试

1、车牌号直接模拟就好 100%
#include <bits/stdc++.h>

using namespace std;
int main(){
    int T;
    cin >> T;
    double ret = 0;
    int t = T;

    while(T-- > 0){
        int cur_score = 0;
        string scan, gt;
        cin >> scan >> gt;
        vector<string> scan_v;
        vector<string> gt_v;
        // 颜色
        scan_v.push_back(scan.substr(0, 1));
        gt_v.push_back(gt.substr(0, 1));
        // 地址
        scan_v.push_back(scan.substr(1, scan.size()-1-5));
        gt_v.push_back(gt.substr(1, gt.size()-1-5));
        // 车牌号
        scan_v.push_back(scan.substr(scan.size()-5, 5));
        gt_v.push_back(gt.substr(gt.size()-5, 5));
        
        if(scan_v[0] == gt_v[0])
            cur_score += 2;
        if(scan_v[1] == gt_v[1])
            cur_score += 3;

        int same_size = 0;
        for(int idx1=0; idx1< scan_v[2].size(); idx1++){
            for(int idx2=0; idx2< gt_v[2].size(); idx2++){
                int len = 0;
                int i = idx1, j=idx2;
                while(i< scan_v[2].size()&& j< gt_v[2].size() && scan_v[2][i] == gt_v[2][j]){
                    i++;
                    j++;
                    len++;
                }
                same_size = max(len, same_size);
            }
        }
        cur_score += same_size;
        ret += ((double)cur_score/10);
    }
    ret = ret / (t);
    printf("%0.2f", ret);
    return 0;
}
2、给每一个资源设置一个引用计数,被加载时就加一,减少时就减一,类似shared_ptr  100%
#include <bits/stdc++.h>

using namespace std;

int cur_size = 0;
void load(unordered_set<int>& has_load, vector<vector<int>>& need, vector<int>& times, int id){
    if(has_load.find(id) != has_load.end())
        return;
    has_load.insert(id);
    times[id] += 1;
    if(times[id] == 1)
        cur_size += 1;
    for(int i=0; i< need[id].size(); i++){
        load(has_load, need, times, need[id][i]);
    }
}

int main(){
    int N, M;
    cin >> N >> M;
    vector<vector<int>> need(N);
    vector<int> times(N, 0);
    for(int i=0; i< N; i++){
        int num;
        cin >> num;
        int idx = 0;
        need[i].resize(num);
        while(num-- > 0){
            cin >> need[i][idx++];
        }
    }
    int ret = 0;
    while(M-- > 0){
        int op, id;
        cin >> op >> id;
        if(op == 0){
            for(int i=0; i< need[id].size(); i++){
                times[need[id][i]] -= 1;
                if(times[need[id][i]] == 0){
                    cur_size -= 1;
                }
            }
            times[id] -= 1;
            if(times[id] == 0){
                cur_size -= 1;
            }
        }else{
            unordered_set<int> has_load;
            load(has_load, need, times, id);
        }
        ret = max(ret, cur_size);
    }
    cout << ret;
    return 0;
}
3、N个矩形求拐点;不会
4、10张地图,每张地图有怪,和金币,求自身能获得的最大金币数量;不会



#雷火笔试##网易雷火23秋招笔试怎么这么难#
全部评论
三题计算几何是ACM难度了吧。。。四题我蒙特卡罗做的,进图先吃金币(实际有些金币是被怪挡住的不能无脑吃)然后随机选怪打,骗了70%的分
5 回复 分享
发布于 2022-09-18 22:05 四川
第四题乱写,只算能清这张图里所有的怪的情况,骗了31%
2 回复 分享
发布于 2022-09-18 22:03 新加坡
寄 给了三个小时还是时间不够 太tm难想了后三道 第二题A了,第一题30数据过不了不知道为何,可能是平时细节太差了. 总之只A了1.7只能说未来可寄
1 回复 分享
发布于 2022-09-18 22:04 江苏
巧了,我也一样,第三题直接看不懂题目是啥意思
点赞 回复 分享
发布于 2022-09-18 22:02 北京
+1
点赞 回复 分享
发布于 2022-09-18 22:04 浙江
第二题按照dfs的想法一直是0,心态炸了。。。
点赞 回复 分享
发布于 2022-09-18 22:04 湖北
第三题离散化+扫描线+线段数,写了两个小时用例过了才28%,不知道哪里写错了。 结果第四题没时间做了。 网易这是只打算招acm金牌选手阿
点赞 回复 分享
发布于 2022-09-18 22:07 广东
有第一题只过80%的吗,不知道为哈
点赞 回复 分享
发布于 2022-09-18 23:40 北京

相关推荐

不愿透露姓名的神秘牛友
今天 10:25
点赞 评论 收藏
分享
专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
2 7 评论
分享
牛客网
牛客企业服务