WA on test 40
查看原帖
WA on test 40
77615
OIerAlbedo楼主2021/3/18 10:55

好心人帮忙看看为什么会WA

#include<bits/stdc++.h>
using namespace std;
int a[20];
int x,y,T,n,i,sum,ans;
void sc(int pp)
{

    int b[200];
for (int i=0;i<=20;i++) b[i]=0;
	int i,o1=0,j,k,w;
	if (pp>=sum) return ;
	if (pp>=10) return;
	for (i=0;i<=13;i++) 
	    if (a[i]>0) o1+=1;
	if (pp+o1<sum) sum=pp+o1;
	for (i=1;i<=13;i++)
	     if (a[i]==3)
	        {
	        	for (j=0;j<=13;j++)
	        	    if ((j!=i)&(a[j]>=1))
	        	       {
	        	       	a[i]-=3;a[j]-=1;
                       
	        	       	sc(pp+1);
	        	       	a[i]+=3;a[j]+=1;
					   }
			}
    for (i=1;i<=13;i++)
	     if (a[i]==3)
	        {
	        	for (j=1;j<=13;j++)
	        	    if ((j!=i)&(a[j]>=2))
	        	       {

	        	       	a[i]-=3;a[j]-=2;
	        	       	sc(pp+1);
	        	       	a[i]+=3;a[j]+=2;
					   }
			}
	for (i=1;i<=13;i++)
	     if (a[i]==4)
	        {
	        	int w2=0;
	        	for (j=1;j<=13;j++)
	        	    if ((j!=i)&(a[j]>=2))
	        	       {

	        	        a[i]-=4;a[j]-=2;

                        sc(pp+1);a[i]+=4;a[j]+=2;
					   }
			       for (j=0;j<=13;j++)
	        	    if ((j!=i)&(a[j]>=1))
	        	       {
	        	        w2++;b[w2]=j;
	        	        for (k=1;k<w2;k++)
	        	           
				       {
				       	a[i]-=4;a[b[w2]]-=1;a[b[k]]-=1;
				       	sc(pp+1);
				       	a[i]+=4;a[b[w2]]+=1;a[b[k]]+=1;
					   }
	        	            
					   }
			}
        int c[200];
	for (i=1;i<=13;i++)
	     if (a[i]==4)
	        {
	        	int w1=0;
	        	for (j=1;j<=13;j++)
	        	    if ((j!=i)&(a[j]>=4))
	        	       {
	        	        a[i]-=4;a[j]-=4;
                        sc(pp+1);a[i]+=4;a[j]+=4;
					   }
			    for (j=1;j<=13;j++)
	        	    if ((j!=i)&(a[j]>=2))
	        	       {
	        	        w1++;c[w1]=j;
	        	        for (k=1;k<w1;k++)
	        	           
				       {
				       	a[i]-=4;a[c[w1]]-=2;a[c[k]]-=2;
				       	sc(pp+1);
				       	a[i]+=4;a[c[w1]]+=2;a[c[k]]+=2;
					   }
	        	            
					   }
			}
	bool flag;
	for (j=3;j<=10;j++)
	     	     {
	     	     	int k=j,kk1=0;
	     	      while (k!=2)
				        {
				        	if (a[k]>0)
				        	    {
				        	    	a[k]--;kk1++;
				        	    	if (kk1>=5) sc(pp+1);
								}
							else break;
							k=k % 13+1;
							}	
					int kkk1=0;k=j;
					while (kkk1<kk1)
					      {
					      	a[k]++;k=k % 13+1;kkk1++;
						  }
				 }
for (j=3;j<=12;j++)
	     	     {
	     	     	int k=j,kk2=0;
	     	      while (k!=2)
				        {
				        	if (a[k]>1)
				        	    {
				        	    	a[k]-=2;kk2++;
				        	    	if (kk2>=3) sc(pp+1);
								}
							else break;
							k=k % 13+1;
							}	
					int kkk2=0;k=j;
					while (kkk2<kk2)
					      {
					      	a[k]+=2;k=k % 13+1;kkk2++;
						  }
				 }
for (j=3;j<=13;j++)
	     	     {
	     	     	int k=j,kk3=0;
	     	      while (k!=2)
				        {
				        	if (a[k]>2)
				        	    {
				        	    	a[k]-=3;kk3++;
				        	    	if (kk3>=3) sc(pp+1);
								}
							else break;
							k=k % 13+1;
							}	
					int kkk3=0;k=j;
					while (kkk3<kk3)
					      {
					      	a[k]+=3;k=k % 13+1;kkk3++;
						  }
				 }
}
int main()
{
	//freopen("P2668.in","r",stdin);
	//freopen("P2668.out","w",stdout);
	cin>>T>>n;
	for (;T;T--)
	     {
	     	for (i=0;i<=13;i++) a[i]=0;
	     	ans=0;
	     	for (i=1;i<=n;i++)
	     	     {
	     	     	cin>>x>>y;
	     	     	a[x]++;
				  }
			sum=100000000;
			sc(ans);
			cout<<sum<<endl;
		 }
	return 0;
}
2021/3/18 10:55
加载中...