牛客编程巅峰赛S1第3场 - 黄金钻石 A.简单题 B.dfs C.并查集
链接:https://ac.nowcoder.com/acm/contest/6383/A
来源:牛客网
找卧底
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
牛牛今天和大家玩了一个新游戏,除了牛牛以外还有n个人参加游戏,现在这n个人中的每个人从[1,n]中选择一个数字,保证选出的数字均不重复。牛牛作为第n+1个人,充当卧底的角色,要求卧底从1到n中选择一个数字,现在将n+1个数字重新打乱顺序,请找出卧底选择的数字是多少。
示例1
输入
复制
4,[1,2,1,4,3]
输出
复制
1
备注:
其中1<=n<=100000。
要求时间复杂度为O(n),额外空间复杂度为O(1)
class Solution {public:/*** * @param n int整型 * @param a int整型vector * @return int整型*/int search(int n, vector<int>& a) {map<int,int>mp;for(int i=0;i<a.size();i++){if(mp[a[i]])return a[i];mp[a[i]]++;}}};
链接:https://ac.nowcoder.com/acm/contest/6383/B
来源:牛客网
时间限制:C/C++ 3秒,其他语言6秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
题意
在一颗有 nn 个结点且以 11 为根节点树上,起初每个结点的初始权值为 00 。
现在有 qq 次操作,每次操作选择将以 r_ir
i
为根节点的子树上的所有结点权值增加 x_ix
i
。
求 qq 次操作后从 11 到 nn 每个结点的权值。
输入
第一个参数为 nn,1\leq n \leq 100,0001≤n≤100,000
第二个参数为边 (u_i, v_i)(u
i
,v
i
) 的集合,其中 (u_i, v_i)(u
i
,v
i
) 表示结点 u_iu
i
与结点 v_iv
i
之间有一条边,1\leq u_i, v_i \leq n1≤u
i
,v
i
≤n
第三个参数为 qq,1 \leq q \leq 100,0001≤q≤100,000
第四个参数为 qq 次询问的 (r_i, v_i)(r
i
,v
i
) 的集合,1\leq r_i \leq n, 0 \leq \lvert v_i \rvert \leq 1000,0001≤r
i
≤n,0≤∣v
i
∣≤1000,000
返回
从 11 到 nn 每个结点的权值。
示例1
输入
复制
5,[(2,5),(5,3),(5,4),(5,1)],2,[(1, 3), (2, -1)]
输出
复制
[3,2,3,3,3]
说明
第一次操作,将以 1 为根节点的子树上的所有结点权值增加 3,此时结点的权值分别为 [3, 3, 3, 3, 3] ;
第二次操作,将以 2 为根节点的子树上的所有结点权值增加 -1,此时结点的权值分别为 [3, 2, 3, 3, 3] ;
/*** struct Point {* int x;* int y;* };*/
const int maxn=1e5+5;
int w[maxn],v[maxn];
vector<int>adj[maxn];
vector<long>ans;
class Solution {public:/*** 从 1 到 n 每个结点的权值。* @param n int整型* @param Edge Point类vector (u, v) 集合* @param q int整型* @param Query Point类vector Point.x 为题中 r, Point.y为题中 v* @return long长整型vector*/void build(int fa,int u){w[u]=v[u]+w[fa];for(auto i:adj[u]){if(i==fa)continue;build(u,i);}}vector<long> solve(int n, vector<Point>& a, int q, vector<Point>& Query) {// write code herefor(int i=0;i<n-1;i++){int u=a[i].x;int v=a[i].y;adj[u].push_back(v);adj[v].push_back(u);}for(int i=0;i<q;i++){int x=Query[i].x;int y=Query[i].y;v[x]+=y;}build(0,1);for(int i=1;i<=n;i++){ans.push_back(w[i]);}return ans;}
};
链接:https://ac.nowcoder.com/acm/contest/6383/C
来源:牛客网
题目描述
题意
牛牛有一个长为 nn 的排列 pp ,与 mm 对 (x_i, y_i)(x
i
,y
i
) 。
每对 (x_i, y_i)(x
i
,y
i
) 表示可以将 p_{x_i}p
x
i
的值与 p_{y_i}p
y
i
的值互换。
mm 对 (x_i, y_i)(x
i
,y
i
) 的使用顺序与次数不限。
牛牛想知道,任意次操作之后他能得到的字典序最小的排列是什么
字典序定义:对于数字1、2、3…n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列 12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是 54321。(来自百度百科)
输入
第一个参数为 nn,1\leq n \leq 100,0001≤n≤100,000
第二个参数为 mm,1\leq m \leq 100,0001≤m≤100,000
第三个参数为初始排列 pp,1\leq p_i\leq n1≤p
i
≤n
第四个参数为 mm 对 (x_i, y_i)(x
i
,y
i
), 1\leq x_i, y_i\leq n, x_i \neq y_i1≤x
i
,y
i
≤n,x
i
=y
i
返回
字典序最小的排列
示例1
输入
复制
5,3,[5,2,3,4,1],[(2,4),(1,4),(3,4)]
输出
复制
[2,3,4,5,1]
说明
- 交换 (3, 4), 交换后的序列为: 5, 2, 4, 3, 1
- 交换 (2, 4), 交换后的序列为: 5, 3, 4, 2, 1
- 交换 (1, 4), 交换后的序列为: 2, 3, 4, 5, 1
/*** struct Point {* int x;* int y;* };*/int f[100010], a[100010];
priority_queue<int ,vector<int > , greater<> >q[100005];
class Solution {public:/*** 返回牛牛所能得到的字典序最小的排列* @param n int整型* @param m int整型* @param perm int整型vector* @param Pair Point类vector* @return int整型vector*/int find(int x){if(x==f[x]){return x;}return f[x]=find(f[x]);}void Union(int x, int y) {f[find(x)] = find(y);}vector<int> solve(int n, int m, vector<int>& perm, vector<Point>& Pair) {for (int i = 1; i <= n; i++)f[i]=i;for (auto i : Pair) Union(i.x, i.y);for (int i = 1; i <= n; i++) q[find(i)].push(perm[i-1]);vector<int> ans(n);for (int i = 1; i <= n; i++){ans[i-1]=q[find(i)].top();q[find(i)].pop();}return ans;}
};
牛客编程巅峰赛S1第3场 - 黄金钻石 A.简单题 B.dfs C.并查集相关推荐
- 牛客编程巅峰赛S1第7场 - 黄金钻石A-B-C
比赛链接:牛客编程巅峰赛S1第7场 - 黄金&钻石 文章目录 A.牛牛打怪兽 DFS B.牛牛的冰激凌 贪心 C.数列求值 矩阵快速幂 A.牛牛打怪兽 DFS 题意 身为屯里第一剑士的牛牛来到 ...
- 牛客编程巅峰赛S1第6场 - 黄金钻石王者(总结)
牛客编程巅峰赛S1第6场 - 黄金&钻石&王者(总结) A:牛牛爱奇数 题意 有一个由n个元素组成的数组,牛牛想要将所有的数都变成奇数(即:将所有的偶数都变成奇数),但是他的操作是:一 ...
- 牛客编程巅峰赛S1第2场 - 黄金钻石 1.规律 2.bfs
链接:https://ac.nowcoder.com/acm/contest/6357/A 来源:牛客网 题目描述 牛牛重新定义了斐波那契数列,牛牛定义f(n) = f(n-1)+f(n+1); f( ...
- 牛客编程巅峰赛S1第7场 - 黄金钻石 A.dfs B.dpC.快速幂
链接:https://ac.nowcoder.com/acm/contest/6631/A 来源:牛客网 题目描述 题意 身为屯里第一剑士的牛牛来到训练场里闯关,由于过于勤奋,牛牛的宝剑的耐久度降到了 ...
- 牛客编程巅峰赛S1第6场 - 黄金钻石王者 C.dijkstra
链接:https://ac.nowcoder.com/acm/contest/6629/C 来源:牛客网 题目描述 牛牛和牛妹在进行一场星球模拟游戏,游戏规则如下: 游戏地图内共有n个星球,共有m条隧 ...
- 牛客编程巅峰赛S1第6场 - 黄金钻石王者题解
牛牛爱奇数 链接:https://ac.nowcoder.com/acm/contest/6629/A 来源:牛客网 题目描述 在牛牛面前放着n个数,这些数字既有奇数也有偶数,只不过牛牛对奇数情有独钟 ...
- 算法题解 - 牛客编程巅峰赛S1第3场 - 黄金钻石组
A. 找卧底 题目描述 牛牛今天和大家玩了一个新游戏,除了牛牛以外还有 n 个人参加游戏,现在这 n 个人中的每个人从 [1, n] 中选择一个数字,保证选出的数字均不重复.牛牛作为第 n + 1 个 ...
- 牛客编程巅峰赛S1第2场 - 青铜白银
A.牛牛扔牌 链接:https://ac.nowcoder.com/acm/contest/6219/A 来源:牛客网 题目描述 牛牛现在有n张扑克牌,每张扑克牌都有点数和花色两部分组成.点数为'1' ...
- 牛客编程巅峰赛S2第5场 - 钻石王者 C.Tree III
牛客编程巅峰赛S2第5场 - 钻石&王者 C.Tree III 题目链接 题目描述 给出一棵有n个节点的节点标号为1~n的有根树(根为第一个节点,并给出从第2个节点到第n个节点的父结点),请你 ...
最新文章
- 什么是数据库范式(NF)?从一范式到五范式分别是什么?
- 数据挖掘方法案例介绍
- NUC1397 Oil Deposits【DFS】
- 从“连接”到“交互”—阿里巴巴智能对话交互实践及思考
- Linux查看磁盘空间和文件夹大小
- 使用基础node.js的express框架在连接数据库的过程中,出现Error: Cannot enqueue Handshake after invoking quit.的解决方案
- 使用ReactiveCocoa实现iOS平台响应式编程
- 23 android多线程
- 稳健Capon波束形成
- win10应用商店打不开_为何win10应用商店不能下载itunes
- 主机win7和虚拟机xp之间的文件传输
- 数据中台系统架构设计
- 删除dataframe中的某行 删除不掉是为啥
- python3多线程和多进程_Python3 多线程、多进程
- 格力(GREE)家用移动空调免安装一体机空调KY-23NK 清灰拆装教程
- Linux:selinux安全上下文
- 下班前几分钟,逮到一个腾讯10年老测试开发,聊过之后彻底悟了...
- Db2 load 导致表空间pengding
- 侠客行:一技压身,天下行走
- 汉克时代 签2份合同_在动荡的时代找到一份工作
热门文章
- 【云周刊】第135期:云栖大会珍贵技术资料:20+覆盖容器技术、智能工业、大数据、开源数据库
- PTA 7-14 电话聊天狂人(25 分)map的应用
- C语言,好爽(第一二三季)
- 关于Beyond Compare 4秘钥过期处理方法,百试不爽
- Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识
- 游戏厂商必看:游戏音效验收标准
- 太赞了!Github上都没有的“网约车”项目!!!
- c语言自动填表chrome网页,教你设置Chrome浏览器里的自动填表功能
- 地球最后的夜晚 HDTC
- 单元测试需要异步测试时使用的WaitCallbackHelper等待线程方法