标签:return 没有 十进制 space 超过 偶数 problem 次方 style
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 int n, m; 7 int G[505][505]; 8 struct node{ 9 int odd, even; 10 int is; 11 }; 12 node row[505]; 13 14 int main(){ 15 scanf("%d%d", &n, &m); 16 for(int i = 0; i < n; i++){ 17 for(int j = 0; j < m; j++){ 18 scanf("%d", &G[i][j]); 19 } 20 } 21 22 int t; 23 for(int num = 0; num <= 8; num++){ //枚举结果的位 24 //分类 25 for(int i = 0; i < n; i++){ 26 row[i].odd = 0, row[i].even = 0; 27 for(int j = 0; j < m; j++){ 28 t = (G[i][j] >> num); //取出整数的第num位 29 if(t & 1) row[i].odd = 1; 30 else row[i].even = 1; 31 } 32 if(row[i].even == 1 && row[i].odd == 1){ 33 row[i].is = 2; //第三种情况 34 } 35 else if(row[i].even == 1){ 36 row[i].is = 0; //第一种情况 37 } 38 else row[i].is = 1; //第二种情况 39 } 40 41 int flag = 0; //标记 42 int cnt = 0; //统计第一种情况个数 43 for(int i = 0; i < n; i++){ 44 if(row[i].is == 1) cnt++; 45 } 46 if(cnt % 2 == 1) flag = 1; //第一种情况为奇数个 47 48 for(int i = 0; i < n; i++){ 49 if(row[i].is == 2){ //有符合第三种情况的行,也必定可以产生贡献 50 flag = 1; 51 break; 52 } 53 } 54 55 if(flag) { 56 printf("TAK\n"); 57 if(cnt % 2 == 1){ 58 for(int i = 0; i < n; i++){ 59 if(row[i].is == 2){ 60 for(int j = 0; j < m; j++){ 61 t = (G[i][j] >> num); 62 if(t % 2 == 0){ 63 printf("%d", j+1); 64 break; 65 } 66 } 67 } 68 else printf("%d", 1); //1是随便取的,只要在[1,m]内就行 69 70 //输出格式 71 if(i == n-1) printf("\n"); 72 else printf(" "); 73 } 74 } 75 else{ 76 int fd = -1; 77 //随便找符合第三种情况的一行,产生贡献 78 for(int i = 0; i < n; i++){ 79 if(row[i].is == 2) { 80 fd = i; 81 break; 82 } 83 } 84 85 for(int i = 0; i < n; i++){ 86 if(row[i].is == 2){ 87 if(i == fd){ 88 for(int j = 0; j < m; j++){ 89 t = (G[i][j] >> num); 90 if(t % 2 == 1){ 91 printf("%d", j+1); 92 break; 93 } 94 } 95 } 96 else{ 97 for(int j = 0; j < m; j++){ 98 t = (G[i][j] >> num); 99 if(t % 2 == 0){ 100 printf("%d", j+1); 101 break; 102 } 103 } 104 } 105 } 106 else printf("%d", 1); //同上 107 108 //输出格式 109 if(i == n-1) printf("\n"); 110 else printf(" "); 111 } 112 } 113 return 0; 114 } 115 } 116 117 printf("NIE\n"); 118 119 return 0; 120 }
Codeforces Round #553 B. Dima and a Bad XOR
标签:return 没有 十进制 space 超过 偶数 problem 次方 style
原文地址:https://www.cnblogs.com/happy-MEdge/p/10976368.html