CodeForces - 1209D 并查集
2024-08-29 21:19:39
题意:
有 n个不同的糖果,从 1到 n编号。有 k个客人。要用糖果招待客人。对于每个客人,这些糖果中恰有两个是其最爱。第 i个客人最爱的糖果编号是 xi和 y。将 k
个客人任意排列,他们按顺序去拿自己最爱的糖果。
客人要拿到至少一个最爱的糖果才满意。
求不满意的客人的最小数目。
题解:
题目让求不满意客人最小数量,那么就肯定会有这样情况发生:
3 3
1 2
1 3
1 3
刚开始1号客人喜欢1和2糖果,因为1和2号糖果都没被用过,那么我们就先把1号糖果分给1号客人,后面第二个客人喜欢1和3号糖果,因为1号糖果用过了,所以3号糖果给2号客人。后面3号客人喜欢的糖果都被用过了,这个时候就要让1号客人放弃一号糖果去用2号糖果了。
我们也就是要解决放弃某个糖果去用另一个糖果这个抉择过程
这样的话我们可以用并查集,如果一个人喜欢1和2号糖果,那么就让1和2号糖果合并到一个集合里面。
这样的话合并1号糖果和2好糖果就相当于吃了1号或2号糖果中的一个,具体吃的哪个没有确定下来。这样的话就可以解决上面的问题
过程:
如果两个糖果在同一个集合中,说明两个糖果都被吃完了,如果两个糖果不在同一个集合中,说明至少还有一个糖果可以吃,那么把他们吃掉,同时两个集合合并为一个。
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<math.h>
6 #include<vector>
7 #include<queue>
8 #include<stack>
9 #include<map>
10 using namespace std;
11 typedef long long ll;
12 const int maxn=1e5+10;
13 const int INF=0x3f3f3f3f;
14 const double eps=1e-10;
15 const int mod = 1e9+7;
16 #define mt(A,B) memset(A,B,sizeof(A))
17 #define lson l,m,rt*2
18 #define rson m+1,r,rt*2+1
19 #define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
20 int v[maxn];
21 void init(int n)
22 {
23 for(int i=0; i<=n; i++)
24 v[i]=i;
25 }
26 int finds(int x)
27 {
28 if(x==v[x]) return x;
29 return v[x]=finds(v[x]);
30 }
31 bool unite(int x,int y)
32 {
33 x=finds(x);
34 y=finds(y);
35 if(x!=y)
36 {
37 v[x]=y;
38 return true;
39 }
40 return false;
41 }
42 int main()
43 {
44 SIS;
45 int n,k,x,y,ans=0;
46 cin >> n >> k;
47 init(n);
48 for(int i=0; i<k; i++)
49 {
50 cin >> x >> y;
51 if(!unite(x,y)) ans++;
52 }
53 cout << ans << endl;
54 return 0;
55 }
最新文章
- 使用javascript实现贪吃蛇游戏
- 微信企业号api调用频率
- 移动端前端UI库—Frozen UI、WeUI、SUI Mobile
- Eclipse启动时出现错误 An internal error occurred during: “Updating indexes”
- OD调试篇10
- JAXB玩转命名空间
- JAVA 子父类的特点
- ubuntu 安装compiz后 黑屏无法进入处理
- 定时组件quartz系列<;一>;模拟定时组件小程序
- Architecture of Device I/O Drivers, Device Driver Design
- 一入python深似海--dict(字典)的一种实现
- ZOJ 2562	 More Divisors
- 5、第5节课CSS补充和html 标签讲解20150924
- Cocos2d-x使用android拍照功能加载照片内存过大,通过另存照片尺寸大小解决
- 移动设备真机调试本地程序的Node.js【无需连wifi】
- maven父子模块deploy 问题
- ZOJ4043 : Virtual Singers
- 2018-2019-2 20165205 Exp2 后门原理与实践
- 【2018.04.27 C与C++基础】关于switch-case及if-else的效率问题
- python中如何删除列表中的所有元素
热门文章
- docker 数据卷的挂载和使用
- 【MySQL】DDL数据定义语言的基本用法create、drop和alter(增删改)
- 【ORA】ORA-00371: not enough shared pool memory
- 在Jetbrain IDE中自定义TODO功能
- 这难道不是.NET5 的bug? 在线求锤?
- 微软官网下载win10离线介质
- [XAML] 使用 XAML 格式化工具:XAML Styler
- MySQL全面瓦解19:游标相关
- me21n增强BADI:ME_PROCESS_PO_CUST之process_account
- 边缘计算k8s集群SuperEdge初体验