NWERC 2012 Foul Play 构造 (uvaLive 6271 )
来源:互联网 发布:远盾网络 编辑:程序博客网 时间:2024/05/16 11:03
书上的解法:
每一轮分四个阶段:
第一阶段:对队1不能消灭的队伍,尽量用队1能消灭的队伍去消灭。
第二阶段:队1任选一个能战胜的队伍 消灭。
第三阶段: 队1不能消灭的队伍自相残杀。
第四阶段:所有未比赛的队伍任意杀。
这样每一轮结束之后都能保证队1至少能战胜一半的队伍。
代码写的烂,只能给自己以后看看。
#include<bits/stdc++.h>#define all(x) (x).begin(), (x).end()#define rep(i,n) for(int i=0 ;i<(n) ;i++)using namespace std;typedef long long ll;const int INF =0x3f3f3f3f;const int maxn=1024 ;int n;char s[maxn+10];bool win[maxn+10][maxn+10];bool vis[maxn+10];bool done[maxn+10];void read(){ memset(done,0,sizeof done); for(int i=1;i<=n;i++) { scanf("%s",s+1); for(int j=1;j<=n;j++) { win[i][j]= s[j]=='1'?1:0; } }}void match(){ memcpy(vis,done,sizeof done); for(int i=2;i<=n;i++) if(!vis[i]&&!win[1][i]) { int find=-1; for(int j=1;j<=n;j++) if(!vis[j]&&win[1][j]&&win[j][i])//最中间那个条件很重要 { find=j; break; } if(~find) { vis[i]=1; done[i]=1; vis[find]=1; printf("%d %d\n",find,i); } } for(int i=1;i<=n;i++) if(!vis[i]&&win[1][i]) { done[i]=1; vis[i]=1; vis[1]=1; printf("%d %d\n",1,i); break; } int now=-1; for(int i=1;i<=n;i++) if(!vis[i]&&!win[1][i]) { if(now==-1) { now=i; } else { printf("%d %d\n",now,i); vis[now]=vis[i]=1; if(win[now][i]) done[i]=1; else done[now]=1; now=-1; } } if(~now) { for(int i=1;i<=n;i++) if(!vis[i]&&i!=now) { printf("%d %d\n",now,i); vis[now]=vis[i]=1; if(win[now][i]) done[i]=1; else done[now]=1; break; } now=-1; } for(int i=1;i<=n;i++) if(!vis[i]) { if(now==-1) { now=i; } else { printf("%d %d\n",now,i); vis[now]=vis[i]=1; if(win[now][i]) done[i]=1; else done[now]=1; now=-1; } }}void work(){ int num=n; while(num>1) { match(); num/=2; }}int main(){ while(~scanf("%d",&n)) { read(); work(); } return 0;}
0 0
- NWERC 2012 Foul Play 构造 (uvaLive 6271 )
- 例题8-17 不公平竞赛(Foul Play, ACM/ICPC NWERC 2012, UVa1609)
- UVa 1609:Foul Play(递归+构造)
- 1609 Foul Play
- uva1609 foul play
- Foul Play UVA
- UVA 1609 Foul Play
- UVA-1609 Foul Play
- Foul Play UVA
- Foul Play(决策+递归)
- UVa OJ 1609 - Foul Play
- NWERC 2012 练习赛题解
- UVALive 7269 (构造)
- NWERC 2012 Joint Venture (二分+枚举)
- NWERC 2012 Edge Case (Fibonacci数列)
- cried foul
- UVALive 3220Heapsort 构造题
- UVALive 6854 City(构造)
- 【MFC】:MFC如何给控件设计缺省值?
- 深入理解letter-spacing和word-spacing2
- LeetCode之旅(17)-Ugly Number
- hdu 4146 Flip Game【思维+暴力】
- [090626]痕 ~きずあと~【日文硬盘版】[痕+雫&Origin][全CG存档&攻略=日本语启动+打开存档补丁]
- NWERC 2012 Foul Play 构造 (uvaLive 6271 )
- 有哪些让你相见恨晚的 PPT 制作技术或知识?
- 全系统动态污点分析-概要
- 11. Container With Most Water
- 由二进制翻转问题引发的思考
- leetcode之Ugly Number
- java和asp程序,格式化日期的函数
- 国际信息学奥林匹克竞赛(IOI)竞赛语言由三门变为五门
- Bzoj2648:SJY摆棋子:K-D-Tree