京东历年秋招笔试真题

如需获取完整资料,请点击下方链接领取《2024校招笔试真题秘籍》(实时更新中)

不收费,3人组团即可一块免费领取!限量免费10000个名额

手机端点击免费领取:https://www.nowcoder.com/link/campus_xzbs2

电脑端请扫码领取:

1、全多部图

【题目描述】给定一张包含N个点、M条边的无向图,每条边连接两个不同的点,且任意两点间最多只有一条边。对于这样的简单无向图,如果能将所有点划分成若干个集合,使得任意两个同一集合内的点之间没有边相连,任意两个不同集合内的点之间有边相连,则称该图为完全多部图。现在你需要判断给定的图是否为完全多部图。

输入描述:

包含多组数据,每组输入格式为:

第一行包含两个整数N和M,1≤N≤1000,0≤M≤N(N-1)/2;

接下来M行,每行包含两个整数X和Y,表示第X个点和第Y个点之间有一条边,1≤X,Y≤N。

输出描述:

每组输出占一行,如果给定的图为完全多部图,输出Yes,否则输出No。

输入样例:

5 7

1 3

1 5

2 3

2 5

3 4

4 5

3 5

输出样例:

Yes

【解题思路】

根据给的边,可以判断哪些点应该属于一个集合。如果存在一个点同时属于多个集合,则不是完全多部图。

复杂度O(n^2)

 

【参考代码】

#include <bits/stdc++.h>
using namespace std;
const int N = 1000 + 5;
int n, m;
int a[N][N];
int belong[N], cnt;
int main() {
    scanf("%d%d", &n, &m);
    while(m--) {
        int u, v;
        scanf("%d%d", &u, &v);
        a[u][v] = a[v][u] = 1;
    }
    for(int u = 1; u <= n; ++u) {
        if(belong[u]) continue;
        belong[u] = ++cnt;
        for(int v = u + 1; v <= n; ++v) {
            if(!a[u][v]) {
                if(belong[v] != 0) {
                    puts("No");
                    return 0;
                }
                belong[v] = cnt;
            }
        }
    }
    for(int u = 1; u <= n; ++u) {
        for(int v = u + 1; v <= n; ++v) {
            if(belong[u] == belong[v] && a[u][v] ||
               belong[u] != belong[v] && !a[u][v]) {
                puts("No");
                return 0;
            }
        }
    }
    puts("Yes");
    return 0;
}

2、对比

【题目描述】现有n个物品,每个物品有三个参数,定义i物品不合格品的依据是:若存在物品j,且,则称i物品为不合格品。

现给出n个物品的a,b,c参数,请你求出不合格品的数量。

输入描述:

第一行包含一个整数n(1<=n<=500000),表示物品的数量。接下来有n行,每行有三个整数,表示第i个物品的三个参数

输出描述:

输出包含一个整数,表示不合格品的数量。

输入样例:

3

1 4 2

4 3 2

2 5 3

输出样例:

1

样例解释:

物品1的a,b,c均小于物品3的a,b,c,因此1为不合格品。

【解题思路】

三维偏序问题。

先对第一维排序,然后降序处理。对于第二三维,可以用一个平衡树(可以使用std::multiset)维护一个外围包络,这样可以快速判断一个点的右上方是

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024软件笔试真题+答案合集 文章被收录于专栏

本专刊由牛客官方团队打造,主要讲解名企校招技术岗位的笔试题,内容中包含多个名企的笔试真题,附有题目思路及参考代码

全部评论

相关推荐

我见java多妩媚:大外包
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务