1 条题解

  • 0
    @ 2025-8-24 21:57:50

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar MloVtry
    **

    搬运于2025-08-24 21:57:50,当前版本为作者最后更新于2018-02-28 11:42:41,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    大力DP。 至少有3个数不同,那么我任选两个扔掉,剩下的一定需要不同。

    还有位置是要对应的。

    f[sta][i][j][a][b][c]f[sta][i][j][a][b][c]:表示第sta种情况下的剩余的五个数分别是i,j,a,b,ci,j,a,b,c的情况有没有被占用过。

    C72=21C_7^2=21,总共21种情况,大力转移即可。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int f[25][20][20][20][20][20],n;
    void put(int i,int j,int a,int b,int c,int d,int e)
    {
    //	cout<<i<<" "<<j<<" "<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
    	putchar(i<10?i+'0':'a'+i-10);
    	putchar(j<10?j+'0':'a'+j-10);
    	putchar(a<10?a+'0':'a'+a-10);
    	putchar(b<10?b+'0':'a'+b-10);
    	putchar(c<10?c+'0':'a'+c-10);
    	putchar(d<10?d+'0':'a'+d-10);
    	putchar(e<10?e+'0':'a'+e-10);
    }
    int main()
    {
    	scanf("%d",&n);
    	for(int i=0;i<16;++i)
    	for(int j=0;j<16;++j)
    	for(int a=0;a<16;++a)
    	for(int b=0;b<16;++b)
    	for(int c=0;c<16;++c)
    	for(int d=0;d<16;++d)
    	for(int e=0;e<16;++e)
    	{
    		if(!f[1][a][b][c][d][e]&&!f[2][j][b][c][d][e]&&!f[3][j][a][c][d][e]&&
    		!f[4][j][a][b][d][e]&&!f[5][j][a][b][c][e]&&!f[6][j][a][b][c][d]&&
    		!f[7][i][b][c][d][e]&&!f[8][i][a][c][d][e]&&!f[9][i][a][b][d][e]&&
    		!f[10][i][a][b][c][e]&&!f[11][i][a][b][c][d]&&!f[12][i][j][c][d][e]&&
    		!f[13][i][j][b][d][e]&&!f[14][i][j][b][c][e]&&!f[15][i][j][b][c][d]&&
    		!f[16][i][j][a][d][e]&&!f[17][i][j][a][c][e]&&!f[18][i][j][a][c][d]&&
    		!f[19][i][j][a][b][e]&&!f[20][i][j][a][b][d]&&!f[21][i][j][a][b][c])
    		{
    			n--;
    			if(!n)
    			{
    				put(i,j,a,b,c,d,e);return 0;
    			}
    			f[1][a][b][c][d][e]=f[2][j][b][c][d][e]=f[3][j][a][c][d][e]=
    			f[4][j][a][b][d][e]=f[5][j][a][b][c][e]=f[6][j][a][b][c][d]=
    			f[7][i][b][c][d][e]=f[8][i][a][c][d][e]=f[9][i][a][b][d][e]=
    			f[10][i][a][b][c][e]=f[11][i][a][b][c][d]=f[12][i][j][c][d][e]=
    			f[13][i][j][b][d][e]=f[14][i][j][b][c][e]=f[15][i][j][b][c][d]=
    			f[16][i][j][a][d][e]=f[17][i][j][a][c][e]=f[18][i][j][a][c][d]=
    			f[19][i][j][a][b][e]=f[20][i][j][a][b][d]=f[21][i][j][a][b][c]=1;
    		}
    		
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    3188
    时间
    2000ms
    内存
    512MiB
    难度
    5
    标签
    递交数
    0
    已通过
    0
    上传者