Foul Play UVA
来源:互联网 发布:小孩刘心悠原帖知乎 编辑:程序博客网 时间:2024/06/05 17:46
思路和紫书相同,首先记录队伍1能够打败哪些队伍,以及哪些队伍会打败队伍1,然后对于那些会打败队伍1的队伍,每次都从队伍1能够赢的队伍中找出某一队,正好打败这个队伍,如果找不到,那么就将这些队伍放置到容器fin中,以便后续处理,然后从队伍1的赢得的队伍中找出某一位,让队伍1打败,然后将其余的保存到容器中,让那些在fin中的队伍相互对打,将那些胜利队伍放置到对应的容器中,以此迭代,同时在迭代的过程中输出结果,具体实现见如下代码:
#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>#include<deque>#include<functional>using namespace std;const int maxn = 1024 + 10;int data[maxn][maxn];int main(){int n;while (cin >> n){for (int i = 1; i <= n; i++){string t;cin >> t;for (int j = 0; j < n; j++)data[i][j + 1] = t[j] - '0';}vector<int> win, lose;for (int i = 2; i <= n; i++){if (data[1][i] == 1) win.push_back(i);else lose.push_back(i);}while (n > 1){vector<int> win2, lose2, fin;for (int i = 0; i < lose.size(); i++){int id = lose[i];bool get = false;for (int j = 0; j < win.size(); j++){if (win[j]>0&&data[win[j]][id] == 1){get = true;win2.push_back(win[j]);cout << win[j] << " " << id << endl;win[j] = 0;break;}}if (!get){fin.push_back(id);}}bool first = true;for (int i = 0; i < win.size(); i++){if (win[i] > 0){if (first){cout << "1 " << win[i] << endl;first = false;}else{fin.push_back(win[i]);}}}for (int i = 0; i < fin.size(); i += 2){cout << fin[i] << " " << fin[i + 1] << endl;int id = fin[i];if (data[fin[i]][fin[i + 1]] == 0) id = fin[i + 1];if (data[1][id] == 1) win2.push_back(id);else lose2.push_back(id);}win = win2;lose = lose2;n >>= 1;}}return 0;}
阅读全文
0 0
- Foul Play UVA
- UVA 1609 Foul Play
- UVA-1609 Foul Play
- Foul Play UVA
- UVa OJ 1609 - Foul Play
- UVa 1609:Foul Play(递归+构造)
- 1609 Foul Play
- uva1609 foul play
- Foul Play(决策+递归)
- NWERC 2012 Foul Play 构造 (uvaLive 6271 )
- 例题8-17 不公平竞赛(Foul Play, ACM/ICPC NWERC 2012, UVa1609)
- UVA Play on Words
- cried foul
- uva 10129 - Play on Words
- uva 10129 - Play on Words
- uva 10129 - Play on Words
- UVa 10129 - Play on Words
- UVa 10129 - Play on Words
- 常见机器学习算法
- 蓝桥杯--基础训练--时间转换,字符串对比、矩阵乘法-J(Java)
- 17江苏省物理及创新实验作品大赛回顾
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN
- java的关键字和保留字
- Foul Play UVA
- EEPROM_IIC
- mysql数据库的使用及查询语句
- 自话遗传算法(带实例)
- BZOJ1503: [NOI2004]郁闷的出纳员(洛谷P1486)
- 在Visual Sutdio 2017中使用boost库
- 【学习C++】C++项目的头文件和实现文件分别写什么
- nyoj 99 单词拼接(欧拉图)
- Recycler点击事件_接口回调