BZOJ1900: Uva10601 Cubes

来源:互联网 发布:优衣库网站的seo分析 编辑:程序博客网 时间:2024/05/17 03:44

burnside的定理。。。然后看到1s的时限整个人都炸了!!!!

好吧  那我就打表好了23333

(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(2 3 4 1)     (6 7 8 5)    (10 11 12 9)(3  1) (4 2) (7 5) (8 6) (11 9) (12 10)(4 3 2 1)     (8 7 6 5)    (12 11 10 9)(12 10 3 1)   (5 9 6 2)    (8  11  7 4)(10 1) (12 3) (9 2) (5 6) (11 4) (8 7)(3 10 12 1)   (6 9 5 2)    (7 11 8 4)(8 12 5 1)    (4 11 9 2)    (7 10 6 3)(12 1) (8 5) (4 9) (11 2) (7 6) (10 3)(5 12 8 1)    (9 11 4 2)    (6 10 7 3)(5 2 1) (8 9 3) (12 6 4) (11 10 7)(2 5 1) (9 8 3) (6 12 4) (10 11 7)(4 8 1) (7 12 2) (11 5 3) (10 9 6)(8 4 1) (12 7 2) (5 11 3) (9 10 6)(7 9 1) (3 6 2) (10 5 4) (11 12 8)(9 7 1) (6 3 2) (5 10 4) (12 11 8)(6 11 1) (10 8 2) (7 4 3) (9 12 5)(11 6 1) (8 10 2) (4 7 3) (12 9 5)(6 1) (2) (5 3) (4 9) (7 12) (8 10) (11)(7 1) (11 2) (8 3) (4) (5 10) (6 12) (9)(1) (8 2) (12 3) (5 4) (11 6) (9 7) (10)(10 1) (7 2) (3) (6 4) (5 11) (9 8) (12)(9 1) (12 2) (11 3) (10 4) (5) (8 6) (7)(11 1) (10 2) (9 3) (12 4) (7 5) (6)(8)

都是置换。。我造了两个立方体搞出来的。。。

搞了一个下午

然后暴力发现1m只能做一次

果断打表。。。。

打表代码:

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;#define youhua __attribute__((optimize("O2")))int C[25][13]={  {},  {0,1,2,3,4,5,6,7,8,9,10,11,12},  {0,2,3,4,1,6,7,8,5,10,11,12,9},  {0,3,4,1,2,7,8,5,6,11,12,9,10},  {0,4,1,2,3,8,5,6,7,12,9,10,11},   {0,12,5,1,8,9,2,4,11,6,3,7,10},  {0,10,9,12,11,6,5,8,7,2,1,4,3},  {0,3,9,10,7,2,9,11,4,5,12,8,1},    {0,8,4,7,11,1,3,10,12,2,6,9,5},  {0,12,11,10,9,8,7,6,5,4,3,2,1},  {0,5,9,6,2,12,10,3,1,11,7,4,8},    {0,5,1,8,12,2,4,11,9,3,7,10,6},  {0,2,5,9,6,1,12,10,3,8,11,7,4},  {0,4,7,11,8,3,10,12,1,6,9,5,2},  {0,8,12,5,1,11,9,2,4,10,6,3,7},  {0,7,3,6,10,4,2,9,11,1,5,12,8},  {0,9,6,2,5,10,3,1,12,7,4,8,11},  {0,6,10,7,3,9,11,4,2,12,8,1,5},  {0,11,8,4,7,12,1,3,10,5,2,6,9},    {0,6,2,5,9,3,1,12,10,4,8,11,7},  {0,7,11,8,4,10,12,1,3,9,5,2,6},  {0,1,8,12,5,4,11,9,2,7,10,6,3},  {0,10,7,3,6,11,4,2,9,8,1,5,12},  {0,9,12,11,10,5,8,7,8,1,4,3,2},  {0,11,10,9,12,7,6,5,8,3,2,1,4}};int tim[25];char c;int line[13];bool flag1,flag2;int should=24;int sss[25];youhua inline void check(){for(int i=2;i<=24;i++)   {    for(int j=1;j<=12;j++)       if(line[C[i][j]]!=line[j])goto lp;   tim[i]++;   lp:continue;   }   tim[1]++;}int res[7];int col=6;youhua void dfs(int a){if(a==13)   check();else{  for(int i=1;i<=col;i++)        if(res[i])res[i]--,line[a]=i,dfs(a+1),res[i]++;   }}youhua inline void read(int &a){a=0;do c=getchar();while(c<'0'||c>'9');while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();}int data[13][13][13][13][13][13];youhua void pr(){int R=0;printf("data");for(int i=1;i<=6;i++)   printf("[%d]",res[i]),R+=tim[i];for(int i=7;i<=24;i++)   R+=tim[i];printf("=%d;\n",R/24);}void DFS(int ress,int last,int now){if(now==6&&ress>last)return ;else if(now==6){res[6]=ress,memset(tim,0,sizeof(tim));memset(line,0,sizeof(line));dfs(1);pr();}else   for(int i=0;i<=ress&&i<=last;i++)     res[now]=i,DFS(ress-i,i,now+1);   }int main(){int n,m,i,j;freopen("std.in","r",stdin);freopen("biao.out","w",stdout);memset(res,0,sizeof(0));res[1]=12;DFS(12,3271,1);memset(res,0,sizeof(res));for(i=1;i<=12;i++) read(j),res[j]++;sort(res+1,res+1+6);memset(tim,0,sizeof(tim));memset(line,0,sizeof(line));freopen("std.out","w",stdout);//if()dfs(1);long long ans=0;for(i=1;i<=24;i++)   ans+=tim[i];ans/=24;cout<<ans<<endl;}




AC代码:

#include<cstdio>#include<algorithm>using namespace std;int data[13][13][13][13][13][13]; char c;inline void read(int &a){a=0;do c=getchar();while(c<'0'||c>'9');while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();}int res[9],i,j;int main(){data[2][2][2][2][2][2]=312120;data[3][2][2][2][2][1]=207960;data[3][3][2][2][1][1]=138600;data[3][3][2][2][2][0]=69360;data[3][3][3][1][1][1]=92400;data[3][3][3][2][1][0]=46200;data[3][3][3][3][0][0]=15408;data[4][2][2][2][1][1]=103980;data[4][2][2][2][2][0]=52110;data[4][3][2][1][1][1]=69300;data[4][3][2][2][1][0]=34680;data[4][3][3][1][1][0]=23100;data[4][3][3][2][0][0]=11580;data[4][4][1][1][1][1]=34650;data[4][4][2][1][1][0]=17340;data[4][4][2][2][0][0]=8730;data[4][4][3][1][0][0]=5790;data[4][4][4][0][0][0]=1479;data[5][2][2][1][1][1]=41580;data[5][2][2][2][1][0]=20820;data[5][3][1][1][1][1]=27720;data[5][3][2][1][1][0]=13860;data[5][3][2][2][0][0]=6960;data[5][3][3][1][0][0]=4620;data[5][4][1][1][1][0]=6930;data[5][4][2][1][0][0]=3480;data[5][4][3][0][0][0]=1170;data[5][5][1][1][0][0]=1386;data[5][5][2][0][0][0]=708;data[6][2][1][1][1][1]=13860;data[6][2][2][1][1][0]=6940;data[6][2][2][2][0][0]=3510;data[6][3][1][1][1][0]=4620;data[6][3][2][1][0][0]=2320;data[6][3][3][0][0][0]=784;data[6][4][1][1][0][0]=1160;data[6][4][2][0][0][0]=600;data[6][5][1][0][0][0]=236;data[6][6][0][0][0][0]=48;data[7][1][1][1][1][1]=3960;data[7][2][1][1][1][0]=1980;data[7][2][2][1][0][0]=1000;data[7][3][1][1][0][0]=660;data[7][3][2][0][0][0]=340;data[7][4][1][0][0][0]=170;data[7][5][0][0][0][0]=38;data[8][1][1][1][1][0]=495;data[8][2][1][1][0][0]=250;data[8][2][2][0][0][0]=135;data[8][3][1][0][0][0]=85;data[8][4][0][0][0][0]=27;data[9][1][1][1][0][0]=55;data[9][2][1][0][0][0]=30;data[9][3][0][0][0][0]=13;data[10][1][1][0][0][0]=6;data[10][2][0][0][0][0]=5;data[11][1][0][0][0][0]=1;data[12][0][0][0][0][0]=1;for(i=1;i<=12;i++) read(j),res[j]++;sort(res+1,res+1+6);    printf("%d\n",data[res[6]][res[5]][res[4]][res[3]][res[2]][res[1]]);}




0 1
原创粉丝点击