网易互娱游戏研发工程师笔试4.11

第一题
把所有不为0的点取出来形成一个(距离,点值)的二元组,按照第一维度排序取出来直接模拟即可
#include<bits/stdc++.h>
using namespace std;
#define PII pair<int,int>
#define fi first
#define se second
#define mp make_pair
#define LL long long
#define PLI pair<long long,int>
const int maxn = 510;
const int mod = 1e9 + 7; 
int N,M,S,x,y;
LL L;
int MAP[maxn][maxn];
vector<PLI>P;
int main(){
    int T; scanf("%d",&T);
    while(T--){
        scanf("%d%lld",&N,&L); P.clear();
        for(int i = 1; i <= N ; i ++){
            for(int j = 1; j <= N ; j ++){
                scanf("%d",&MAP[i][j]);
            }
        }
        scanf("%d%d",&x,&y);
        x++;y++;
        for(LL i = 1; i <= N ; i ++){
            for(LL j = 1; j <= N; j ++){
                if(!MAP[i][j]) continue;
                P.push_back(mp((i-x)*(i-x)+(j-y)*(j-y),MAP[i][j]));    
            }
        }
        sort(P.begin(),P.end());
        for(int i = 0 ; i < P.size(); i ++){
            if(L * L >= P[i].fi) L += P[i].se;
            else{break;}
        }
        cout << L << endl;
    } 
    return 0;
}
第二题
并查集基础题,增加一维belong数组表示该点属于哪个集合即可
#include<bits/stdc++.h>
using namespace std;
#define PII pair<int,int>
#define fi first
#define se second
#define mp make_pair
#define LL long long
const int maxn = 1e5 + 10;
const int mod = 1e9 + 7; 
int N,M,S;
int fa[maxn],num[maxn],belong[maxn];
void init(){
    for(int i = 1 ; i <= N; i ++){
        belong[i] = fa[i] = i;
        num[i] = 1;
    } 
}
int find(int x){
    if(fa[x] == x) return x;
    return fa[x] = find(fa[x]);
}
void Union(int a,int b){
    a = find(a);
    b = find(b);
    if(a == b) return;
    num[a] += num[b];
    fa[b] = a;
}
int main(){
    int T; scanf("%d",&T);
    while(T--){
        scanf("%d%d",&N,&M); init();
        int cnt = N;
        for(int i = 1; i <= M ; i ++){
            int op; scanf("%d",&op);
            if(op == 1){
                int x,y; scanf("%d%d",&x,&y);
                Union(belong[x],belong[y]);    
            }else if(op == 2){
                int x; scanf("%d",&x);
                num[find(belong[x])]--;
                belong[x] = ++cnt;
                fa[cnt] = cnt; num[cnt] = 1;
            }else{
                int x; scanf("%d",&x);
                printf("%d\n",num[find(belong[x])]);
            }
        }
    }
    return 0;
}
第三题
状压dp
dp[i]表示前j位数字匹配完i这个状态的最小权,j是i中1的个数
#include<bits/stdc++.h>
using namespace std;
#define PII pair<int,int>
#define fi first
#define se second
#define mp make_pair
#define LL long long
const int maxn = 1e5 + 10;
const int mod = 1e9 + 7; 
int N,M,S;
int a[maxn],V[maxn],P[maxn];
LL dp[1<<20];
const LL INF = 1e18;
int main(){
    int T; scanf("%d",&T);
    while(T--){
        scanf("%d",&N);
        for(int i = 0; i < N ; i ++){
            scanf("%d",&a[i]);
            a[i]--;
            P[a[i]] = i;
        } 
        for(int i = 0; i < N ; i ++) scanf("%d",&V[i]);
        dp[0] = 0;
        int st = (1<<N) - 1;
        for(int i = 1; i <= st;i ++) dp[i] = INF;
        for(int i = 0;i < st; i ++){
            int num = 0;
            for(int j = 0; j < N; j ++) num += (i & (1 << j))>0;
            for(int j = 0 ; j < N ; j ++){ //B[num]位置为j 
                if(i&(1<<j)) continue;
                if(a[num] == j) continue;
                dp[i|(1<<j)] = min(dp[i|(1<<j)],dp[i]+V[j]*abs(P[j]-num));
            }
        }
        printf("%lld\n",dp[st]);
    }
    return 0;
}



不明白的可以在评论区指出
安利我的blog
#网易笔试##网易互娱##笔试题目#
全部评论
第二题要扔出去的节点的子节点还是连向丢出去的点呀
点赞 回复 分享
发布于 2020-04-12 15:19

相关推荐

11-08 10:39
门头沟学院 C++
点赞 评论 收藏
分享
10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
评论
2
2
分享
正在热议
# 25届秋招总结 #
443173次浏览 4517人参与
# 春招别灰心,我们一人来一句鼓励 #
42122次浏览 537人参与
# 阿里云管培生offer #
120406次浏览 2220人参与
# 地方国企笔面经互助 #
7973次浏览 18人参与
# 同bg的你秋招战况如何? #
77083次浏览 569人参与
# 实习必须要去大厂吗? #
55804次浏览 961人参与
# 北方华创开奖 #
107467次浏览 600人参与
# 虾皮求职进展汇总 #
116163次浏览 886人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11668次浏览 289人参与
# 实习,投递多份简历没人回复怎么办 #
2454912次浏览 34860人参与
# 提前批简历挂麻了怎么办 #
149924次浏览 1978人参与
# 在找工作求抱抱 #
906075次浏览 9421人参与
# 如果公司给你放一天假,你会怎么度过? #
4762次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1196021次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157643次浏览 2267人参与
# 双非本科求职如何逆袭 #
662359次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12798次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35896次浏览 384人参与
# 简历中的项目经历要怎么写? #
86935次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20148次浏览 240人参与
# 我的上岸简历长这样 #
452049次浏览 8089人参与
牛客网
牛客企业服务