bzoj1854: [Scoi2010]游戏(二分图匹配)
来源:互联网 发布:tv软件市场 编辑:程序博客网 时间:2024/06/05 15:53
题目传送门
好题!
解法:
想了一会儿如何限制选了一个另外一个不再选呢?
好像可以用二分图匹配诶。
每个装备的两个属性到这个装备有一个匹配关系。
然后就跑最大匹配就行了嘛。
从1开始,能匹配表示可以攻击到这个属性。
否则的话就不能再继续了。
真的卡时间边目录+时间戳
代码实现:
#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;struct node { int x,y,next;}a[2100000];int len,last[11100000];void ins(int x,int y) { len++; a[len].x=x;a[len].y=y; a[len].next=last[x];last[x]=len;}int match[11100000],chw[1110000],t;bool find_match(int x) { for(int k=last[x];k;k=a[k].next) { int y=a[k].y; if(chw[y]!=t) { chw[y]=t; if(match[y]==0||find_match(match[y])==true) { match[y]=x; return true; } } } return false;}int main() { int n;scanf("%d",&n); len=0;memset(last,0,sizeof(last)); int sum=0; for(int i=1;i<=n;i++) { int x,y;scanf("%d%d",&x,&y); ins(x,i);ins(y,i);sum=max(sum,max(x,y)); } t=0; int ans=0; for(int i=1;i<=sum;i++) { t++; if(find_match(i)==true) ans++; else break; } printf("%d\n",ans); return 0;}
阅读全文
0 0
- [BZOJ1854][Scoi2010]游戏(二分图匹配)
- 【bzoj1854 Scoi2010】游戏(二分图匹配)
- bzoj1854: [Scoi2010]游戏(二分图匹配)
- 【bzoj1854】 SCOI2010游戏 二分图匹配
- BZOJ1854 [Scoi2010]游戏(并查集/二分图匹配)
- [BZOJ1854][Scoi2010]游戏(二分图)
- bzoj1854 [Scoi2010]游戏 并查集/二分图最大匹配
- [bzoj1854][Scoi2010]游戏(并查集/二分图最大匹配)
- [bzoj1854][二分图匹配]游戏
- 二分图匹配——BZOJ1854/Luogu1640 [SCOI2010]连续攻击游戏
- 【BZOJ1854】【codevs3358】游戏,二分图最大匹配
- 【二分图匹配】【SCOI2010】游戏
- bzoj1854(二分图匹配)
- bzoj1854 [Scoi2010]游戏(并查集)
- bzoj1854 [Scoi2010]游戏
- bzoj1854[Scoi2010]游戏
- bzoj1854[Scoi2010]游戏
- BZOJ1854 [Scoi2010]游戏
- 查看系统问题原因
- JavaScript 高级程序设计
- 洛谷1044 栈
- 001 线性代数之行列式:定义、逆序数、余子式与代数余子式、n个易算行列式、范德蒙行列式
- 用小说的形式讲解Spring(4) —— 使用Spring Boot创建NoXml的Web应用
- bzoj1854: [Scoi2010]游戏(二分图匹配)
- 51Nod 1366 贫富差距
- learning R with swirl-subsetting vectors(子集向量)
- 在 Intellij IDEA中设置Maven 路径及配置文件的方法(使用阿里云Maven源)
- java控制台中文汉字乱码
- 用 Doc2Vec 得到文档/段落/句子的向量表达
- Python-字典-通讯录
- 黑科技世界–随身携带的小空调Aircon Watch
- NOIP模拟(10.22)T3 树