zoj3954(二进制?)
Posted yijiull
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zoj3954(二进制?)相关的知识,希望对你有一定的参考价值。
题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3954
开始以为是判断矩阵是否可逆,,然而不会。。
看了题解才知道想多了,把每一列看成一个整数,列变换不影响数值,只要两个状态数值相同即可。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 6 struct node 7 { 8 int num; 9 char s[8]; 10 }e[10]; 11 12 int pic[9][7]={ 1,0,0,1,1,1,1, 13 0,0,1,0,0,1,0, 14 0,0,0,0,1,1,0, 15 1,0,0,1,1,0,0, 16 0,1,0,0,1,0,0, 17 0,1,0,0,0,0,0, 18 0,0,0,1,1,1,1, 19 0,0,0,0,0,0,0, 20 0,0,0,0,1,0,0}; 21 int a[8],b[8]; 22 23 int main() 24 { 25 int t; 26 int n; 27 scanf("%d",&t); 28 while(t--) 29 { 30 31 memset(a,0,sizeof(a)); 32 memset(b,0,sizeof(b)); 33 scanf("%d",&n); 34 for(int i=0;i<n;i++) 35 scanf("%d %s",&e[i].num,e[i].s); 36 for(int i=0;i<7;i++) 37 { 38 39 for(int j=0;j<n;j++) 40 { 41 a[i]=a[i]*2+(e[j].s[i]-‘0‘); 42 b[i]=b[i]*2+pic[e[j].num-1][i]; 43 } 44 45 } 46 sort(a,a+7); 47 sort(b,b+7); 48 int ok=1; 49 for(int i=0;i<7;i++) 50 { 51 if(a[i]!=b[i]) 52 { 53 ok=0; 54 break; 55 } 56 } 57 if(ok) puts("YES"); 58 else puts("NO"); 59 60 } 61 }
以上是关于zoj3954(二进制?)的主要内容,如果未能解决你的问题,请参考以下文章
ZOJ - 3987 - Numbers (大数 + 贪心)
HDU1887 ZOJ2982 UVALive3958 Weird Numbers进制