[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

 

posted @ 2016-06-27 21:35  czllgzmzl  阅读(244)  评论(0编辑  收藏  举报