[bzoj2665] [cqoi2012]编号

Posted czllgzmzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[bzoj2665] [cqoi2012]编号相关的知识,希望对你有一定的参考价值。

  首先有一个直观暴力的想法..

  枚举每个数,如果这个数可行的话,就加进答案里,然后把和它超过4个位置相同的数去掉。

  然后正解真的是这个>_<

  假设取到了数x,只要和x有5位相同的数就可以排除掉..

  暴力C(7,5)=21种枚举那5个位置是啥,f[id][i][j][k][a][b]表示第id种位置,5个位置上的数是i,j,k,a,b,是否被已排除。

  一个数可行的话,就得21种位置上的数都没被排除。

  这复杂度竟然能过....O(16^7)

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define ll long long
 6 #define d double
 7 using namespace std;
 8 const int maxn=200233;
 9 bool f[21][17][17][17][17][17];
10  
11 int ra;char rx;
12 inline int read(){
13     rx=getchar(),ra=0;
14     while(rx<\'0\'||rx>\'9\')rx=getchar();
15     while(rx>=\'0\'&&rx<=\'9\')ra*=10,ra+=rx-48,rx=getchar();return ra;
16 }
17 inline void outx(int i,int j,int k,int l,int a,int b,int c){
18     int v[16]={\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'a\',\'b\',\'c\',\'d\',\'e\',\'f\'};
19     printf("%c%c%c%c%c%c%c\\n",v[i],v[j],v[k],v[l],v[a],v[b],v[c]);
20 }
21 int main(){
22     int i,j,k,n;register int l,a,b,c;
23     n=read();
24     for(i=0;i<16;i++)for(j=0;j<16;j++)for(k=0;k<16;k++)for(l=0;l<16;l++)for(a=0;a<16;a++)for(b=0;b<16;b++)for(c=0;c<16;c++)
25         if(
26         !f[0][i][j][k][l][a]
27         &&!f[1][i][j][k][l][b]
28         &&!f[2][i][j][k][a][b]
29         &&!f[3][i][j][l][a][b]
30         &&!f[4][i][k][l][a][b]
31         &&!f[5][j][k][l][a][b]
32         &&!f[6][i][j][k][l][c]
33         &&!f[7][i][j][k][a][c]
34         &&!f[8][i][j][l][a][c]
35         &&!f[9][i][k][l][a][c]
36         &&!f[10][j][k][l][a][c]
37         &&!f[11][i][j][k][b][c]
38         &&!f[12][i][j][l][b][c]
39         &&!f[13][i][k][l][b][c]
40         &&!f[14][j][k][l][b][c]
41         &&!f[15][i][j][a][b][c]
42         &&!f[16][i][k][a][b][c]
43         &&!f[17][j][k][a][b][c]
44         &&!f[18][i][l][a][b][c]
45         &&!f[19][j][l][a][b][c]
46         &&!f[20][k][l][a][b][c]
47         ){
48             n--;
49             if(!n){outx(i,j,k,l,a,b,c);return 0;}
50             f[0][i][j][k][l][a]
51             =f[1][i][j][k][l][b]
52             =f[2][i][j][k][a][b]
53             =f[3][i][j][l][a][b]
54             =f[4][i][k][l][a][b]
55             =f[5][j][k][l][a][b]
56             =f[6][i][j][k][l][c]
57             =f[7][i][j][k][a][c]
58             =f[8][i][j][l][a][c]
59             =f[9][i][k][l][a][c]
60             =f[10][j][k][l][a][c]
61             =f[11][i][j][k][b][c]
62             =f[12][i][j][l][b][c]
63             =f[13][i][k][l][b][c]
64             =f[14][j][k][l][b][c]
65             =f[15][i][j][a][b][c]
66             =f[16][i][k][a][b][c]
67             =f[17][j][k][a][b][c]
68             =f[18][i][l][a][b][c]
69             =f[19][j][l][a][b][c]
70             =f[20][k][l][a][b][c]
71             =1;
72         }
73 }
View Code

 

以上是关于[bzoj2665] [cqoi2012]编号的主要内容,如果未能解决你的问题,请参考以下文章

[LuoguP4222][CQOI2012]编号

[BZOJ2667][cqoi2012]模拟工厂

[bzoj1552][Cerc2007]robotic sort&&[bzoj3506][Cqoi2014]排序机械臂

bzoj2669 cqoi2012—局部极小值

bzoj2668 [cqoi2012]交换棋子

[BZOJ2668][CQOI2012]交换棋子