首页 > 代码库 > zoj3954(二进制?)
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(二进制?)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。