UVA1609FoulPlay
来源:互联网 发布:雅思阅读 杂志 知乎 编辑:程序博客网 时间:2024/06/14 06:08
//UVA1609FoulPlay#include<cstdio>#include<cstdlib>#include<vector>using namespace std;const int MAXN = (1 << 10) + 5;char table[MAXN][MAXN];int main() {int n;while(scanf("%d", &n) == 1 && n) {getchar();for(int i = 1; i <= n; i++) fgets(table[i] + 1, sizeof(table[i]), stdin);/*printf("***\n");*/vector<int> win, lose;for(int i = 2; i <= n; i++) {if(table[1][i] == '1') win.push_back(i);else lose.push_back(i); }//收集所1队的对战信息/*for(int i = 0; i < win.size(); i++) printf("%2d", win[i]);printf("\n");for(int i = 0; i < lose.size(); i++) printf("%2d", lose[i]);printf("\n"); */int r = n;while(r > 1) {/*printf("r = %d\n", r);*/vector<int> win2, lose2, left;for(int i = 0; i < lose.size(); i++) {//i从1开始,跳过自己 bool match = false;for(int j = 0; j < win.size(); j++) {if(win[j] > 0 && table[win[j]][lose[i]] == '1') {//找到一组配对,用自己打得过的队,去打自己打不过的队 match = true;int& twin = win[j];printf("%d %d\n", win[j], lose[i]);win2.push_back(win[j]);//进入下一轮 twin = 0; //不可重复使用同一支球队/*printf("win[j] = %d, j = %d\n", win[j], j);*/break; }}if(!match) left.push_back(lose[i]);}/*printf("left:\n");for(int i = 0; i < left.size(); i++) printf("%d ---\n", left[i]);*/bool tag = true;/*printf("123321321313213123213\n");*/for(int i = 0; i < win.size(); i++) {if(win[i] > 0) {/*printf("win[%d] = %d\n", i, win[i]);*/ if(tag) { printf("%d %d\n", 1, win[i]); tag = false; } else left.push_back(win[i]); }}//给1队配对 /*printf("leftsize = %d\\\\\n", left.size());*/for(int i = 0; i < left.size(); i += 2) { printf("%d %d\n", left[i], left[i + 1]); int keep = left[i]; if(table[keep][left[i + 1]] == '0') keep = left[i + 1]; if(table[1][keep] == '1') win2.push_back(keep);else lose2.push_back(keep); } lose = lose2; win = win2; r >>= 1;} }return 0;}/*4011000110000101080011101010101111000100100100010100110010101010110001000010101010*/
阅读全文
0 0
- UVA1609FoulPlay
- C++中malloc/free与new/delete的区别与联系
- Fragment初识(一)
- 用VS2015编译Qt5.6.0,WebEngine支持XP
- 最长递增子序列(LIS)
- SpringBoot ( 八 ) :RabbitMQ 详解
- UVA1609FoulPlay
- Effective STL 读书笔记
- 项目开发手册的编写
- 介绍java lambda表达式
- 二维数组和数组元素地址
- Jetson TK1运行caffe时cuda报错libcudart.so.6.5: cannot open shared
- Karen and Coffee
- windows 下安装redis
- Linux网络管理