华为笔试(9月13日)

T1,T2较简单就不发了

T3 思维题,一个格子只被覆盖一次时,覆盖它的基站一定选,因为网格很大,用map离散化

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
#define lowbit(x)x & (-x)
const int N = 1e4 + 10, mod = 1e9 + 7,inf = 1e9;

map<int, map<int, int>>g;
vector<pair<int, int>> dic = {{0,0},{0,-1},{0,1},{1,0},{1,1},{1,-1},{-1,0},{-1,-1},{-1,1}};
int x[N],y[N];

void solve(){
    int n, ans = 0,cnt = 0;
    cin >> n;
    for(int i = 1; i<= n; ++i){
        cin >>x[i] >>y[i];
        for(auto [dx, dy] : dic){
            dx += x[i];
            dy += y[i];
            g[dx][dy]++;
            if(dx >= 0 && dy >= 0 && dx < 10000 && dy < 10000 && g[dx][dy] == 1){
                ans++;
            }
        }
    }
    for(int i = 1; i <= n; ++i){
        bool flag = false;
        for(auto [dx, dy] : dic){
            dx += x[i];
            dy += y[i];
            if(dx >= 0 && dy >= 0 && dx < 10000 && dy < 10000 && g[dx][dy] == 1){
                flag = true;
            }
        }
        cnt += flag;
    }
    cout << cnt << " "<< ans << '\n';
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    while(t--){
        solve();
    }
    return 0;
}

只过了 95%,可能是边界问题?不懂

#笔试##华为#
全部评论
为啥不用um
点赞 回复 分享
发布于 2023-09-14 12:34 山东
基站没有放置的时候,相应的区域应该减一,可能存在多次去重问题
点赞 回复 分享
发布于 2023-09-14 08:40 湖南

相关推荐

兄弟们你们进大厂靠的是什么项目啊
DOTPHTP:课设改。其实项目什么的如果不是实习里面的生产项目的话,建议✍️那种自己想要做的。突出个人自驱力,而不是为了找工作不得不随波逐流这种
点赞 评论 收藏
分享
05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
大佬们,在大厂实习的都是几百一天???
爱睡觉的冰箱哥:实习工资这个不都是公开的吗,a不了,字节400,快手350,有些有房补餐补这样
点赞 评论 收藏
分享
评论
4
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务