[BZOJ1854][Scoi2010]游戏(二分图匹配)
来源:互联网 发布:葛优颓废坐姿火爆网络 编辑:程序博客网 时间:2024/06/05 19:07
=== ===
这里放传送门
=== ===
题解
一开始觉得这题是个网络流结果出来了一坨非常不科学的思路。。实际上因为它的权值范围非常小,所以可以直接枚举权值。那么对于那些使用过的武器,一个武器就唯一的对应着它使用的那个权值。于是把武器和权值分别建立成两排点,每个武器向它对应的两个权值连边,那么这个图是一个二分图,它的一个匹配就对应着一种武器使用方式。为了保证权值连续,我们可以从小到大枚举权值开始增广,每一次增广成功都相当于多使用了一个武器。第一次增广不成功就退出即可。这玩意儿好像也可以写Dinic之类的。。但是奇慢无比会T飞,用匈牙利做二分图匹配就非常方便。虽然匈牙利的理论复杂度是
代码
#include<cstdio>#include<cstring>#include<algorithm>#define inc(x)(x=(x%1200000)+1)using namespace std;int n,m,p[1100000],tot,Maxnum,ans,link[1200000],vis[1200000];struct edge{ int to,nxt;}e[6100000];void add(int from,int to){ e[tot].to=to;e[tot].nxt=p[from];p[from]=tot++;}bool find(int u,int k){ for (int i=p[u];i!=-1;i=e[i].nxt){ int v=e[i].to; if (vis[v]==k) continue; vis[v]=k; if (link[v]==-1||find(link[v],k)){ link[v]=u;return true; } } return false;}int get(){ int x=0; char c=getchar(); while (c<'0'||c>'9') c=getchar(); while (c<='9'&&c>='0'){ x=x*10+c-'0';c=getchar(); } return x;}int main(){ memset(p,-1,sizeof(p)); scanf("%d",&n); for (int i=1;i<=n;i++){ int x,y; x=get();y=get(); add(x+n,i);add(y+n,i); Maxnum=max(Maxnum,max(x,y)); } memset(link,-1,sizeof(link)); memset(vis,-1,sizeof(vis)); ans=Maxnum; for (int i=1;i<=Maxnum;i++) if (!find(i+n,i+n)){ans=i-1;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]游戏
- alias的功能
- PHP常用的缓存技术汇总
- for循环与while循环的区别
- 一个在校大学生的开源之路:从0到1024
- 打牢基础:数据类型与运算符
- [BZOJ1854][Scoi2010]游戏(二分图匹配)
- 【vijos】【建反图最短路】最优贸易
- 【bzoj】 1083 繁忙的都市 kruskal
- How to do non greedy regex match in command line
- 并查集基础题:relation
- glViewport()函数和glOrtho()函数的理解(转)
- 【NOIP 2005】 等价表达式 题解
- 二叉排序堆基础模板题
- 从应激反应说教学