Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
3200ms~~~ 求指点!#include<iostream> #include<vector> using namespace std; const int N=9997; int i,j,k,snownum; struct set { int num[6],sum; }; vector<set> hash[N]; bool contrast(set a,set b) { for(int i=0;i<6;i++) { if(a.num[0]==b.num[i%6] && a.num[1]==b.num[(i+1)%6] && a.num[2]==b.num[(i+2)%6] && a.num[3]==b.num[(i+3)%6] && a.num[4]==b.num[(i+4)%6] && a.num[5]==b.num[(i+5)%6]) return true; if(a.num[5]==b.num[i%6] && a.num[4]==b.num[(i+1)%6] && a.num[3]==b.num[(i+2)%6] && a.num[2]==b.num[(i+3)%6] && a.num[1]==b.num[(i+4)%6] && a.num[0]==b.num[(i+5)%6]) return true; } return false; } bool search() { for(i=0;i<N;i++) { for(j=0;j<hash[i].size();j++) for(k=j+1;k<hash[i].size();k++) { if(hash[i][j].sum==hash[i][k].sum && contrast(hash[i][j],hash[i][k])) return true; } } return false; } int main() { set temp; scanf("%d",&snownum); for(i=1;i<=snownum;i++) { temp.sum=0; for(j=0;j<6;j++) { scanf("%d",&temp.num[j]); temp.sum+=temp.num[j]; } hash[temp.sum%N].push_back(temp); } puts(search()?"Twin snowflakes found.":"No two snowflakes are alike."); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator