XDOJ_1004_暴力
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XDOJ_1004_暴力相关的知识,希望对你有一定的参考价值。
http://acm.xidian.edu.cn/problem.php?id=1004
看着很复杂,其实简单。
固定一个二十面体的一个点,拿另一个图形枚举每个点来比较,每一次比较可以比5次(旋转),只要有一次是相同的,就是一样的。
水题,就是要在纸上找出一个个点,细心一点就可以了。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int a[15],b[15],A,B,C,D,E,F,G,H,I,J; int point[12][2] = {{1,12},{2,7},{3,8},{4,9},{5,10},{6,11},{7,2},{8,3},{9,4},{10,5},{11,6},{12,1}}; int x[12][10] = {{2,3,4,5,6,10,11,7,8,9},{1,6,9,10,3,5,8,12,11,4},{11,4,1,2,10,7,5,6,9,12},{1,3,11,7,5,2,10,12,8,6}, {1,4,7,8,6,3,11,12,9,2},{1,5,8,9,2,4,7,12,10,3},{4,11,12,8,5,3,10,9,6,1},{12,9,6,5,7,10,2,1,4,11}, {6,8,12,10,2,5,7,11,3,1},{2,9,12,11,3,6,8,7,4,1},{3,10,12,7,4,2,9,8,5,1},{9,8,7,11,10,6,5,4,3,2}}; int fun(int AA,int BB,int CC,int DD,int EE,int FF,int GG,int HH,int II,int JJ) { if(AA==A && BB==B && CC==C && DD==D && EE==E && FF==F && GG==G && HH==H && II==I && JJ==J) return 1; if(AA==B && BB==C && CC==D && DD==E && EE==A && FF==G && GG==H && HH==I && II==J && JJ==F) return 1; if(AA==C && BB==D && CC==E && DD==A && EE==B && FF==H && GG==I && HH==J && II==F && JJ==G) return 1; if(AA==D && BB==E && CC==A && DD==B && EE==C && FF==I && GG==J && HH==F && II==G && JJ==H) return 1; if(AA==E && BB==A && CC==B && DD==C && EE==D && FF==J && GG==F && HH==G && II==H && JJ==I) return 1; return 0; } int main() { int T; scanf("%d",&T); while(T--) { int flag = 1; for(int i = 1;i <= 12;i++) scanf("%d",&a[i]); for(int i = 1;i <= 12;i++) scanf("%d",&b[i]); A = b[2],B = b[3],C = b[4],D = b[5],E = b[6]; F = b[10],G = b[11],H = b[7],I = b[8],J = b[9]; for(int i = 0;i < 12;i++) { if(a[point[i][0]] == b[1] && a[point[i][1]] == b[12]) { if(fun(a[x[i][0]],a[x[i][1]],a[x[i][2]],a[x[i][3]],a[x[i][4]], a[x[i][5]],a[x[i][6]],a[x[i][7]],a[x[i][8]],a[x[i][9]])) { flag = 0; printf("Identical\n"); break; } } } if(flag) printf("Different\n"); } return 0; }
以上是关于XDOJ_1004_暴力的主要内容,如果未能解决你的问题,请参考以下文章