CodeForces - 1209D

题意

现在n种点心,每种点心只有一份,有k位客人,每位客人有两种想要吃的点心,你可以安排他们进场的顺序,每位客人会吃掉所有他想要吃的,并且还没被吃掉的点心。如果客人一个也没吃到,他就会不开心,问最少的不开心的人是多少?

思路

刚开始以为只会吃掉一个,直接按照第一个元素大小排序,WA了。

一直到比赛结束我都没搞清题意,赛后搜题解很懵逼,怎么和并查集扯上的关系,这不是贪心吗?

题意读错了。。。

第一个客人肯定是把两个都吃掉了,这时为了满足其他的客人,我们要选择的客人肯定是,他喜欢的其中一个被吃掉,另一个没被吃掉。

就是在已知的被吃掉的点心中,寻找没被吃掉的点心,这就是并查集的思想。

代码

//#include<bits/stdc++.h>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<string>
#include<math.h>
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e5+10;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
const double eps=1e-14; int fa[N];
int find(int x)
{
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int ans=0;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
int uu=find(u);
int vv=find(v);
if(uu==vv)
{
ans++;
continue;
}
fa[uu]=vv;
}
printf("%d\n",ans);
return 0;
}

个人博客

最新文章

  1. arcgis中DEM如何生成等高线
  2. [课程设计]Scrum 2.4 多鱼点餐系统开发进度(下单一览页面修复)
  3. PHP面向对象的继承
  4. 关于ie6下拖动滚动条时,div抖动的问题解决
  5. kettle教程(1) 简单入门、kettle简单插入与更新。打开kettle
  6. ios 环境配置网址
  7. oracle16 例外
  8. POJ 2260(ZOJ 1949) Error Correction 一个水题
  9. C++ Primer 5th 第5章 语句
  10. JavaWeb学习笔记--跳转方法小结
  11. HTML+CSS笔记 CSS入门
  12. Shell脚本的颜色样式及属性控制
  13. 大量的rcuob进程
  14. redis的常用命令及实例讲解
  15. python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类
  16. 跨域问题及jQuery中Ajax传参的讲解
  17. python---django初步了解以及安装(包括Django网页首次无法访问的原因及解决方法,以及在linux服务器上布置无法启动的原因)
  18. 微信小程序 - 分包加载(预下载)
  19. FIDDLER的使用方法及技巧总结(连载五)FIDDLER的一些故障排除
  20. 在Android中,px,dp,dip,sp的不同之处

热门文章

  1. Problem E. Bet
  2. Numpy学习-(2)
  3. 前后端分离下用jwt做用户认证
  4. Blazor WebAssembly 3.2.0 已在塔架就位 将发射新一代前端SPA框架
  5. DataTable 与XML 交互
  6. 只会Vue怎么开发小程序?vue和微信小程序的到底有哪些区别?
  7. PE文件学习(1)DOS和NT
  8. [Python] bytes 转换成 str
  9. java关于throw Exception的一个小秘密
  10. idea jdk版本切换