全WA,玄关
查看原帖
全WA,玄关
1083305
lolxytxj楼主2025/7/29 08:40
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int da=999999999,a[25];
void dfs(int c)
{
	if(c>=da) return;
	int k=0;
	for(int i=3;i<=14;i++)
	{
		if(a[i]==0){k=0; continue;}
		k++;
		if(k>=5)
		{
			for(int j=i-k+1;j<=i;j++) a[j]--;
			dfs(c+1);
			for(int j=i-k+1;j<=i;j++) a[j]++;
		}
	}
	k=0;
	for(int i=3;i<=14;i++)
	{
		if(a[i]<2){k=0; continue;}
		k++;
		if(k>=3)
		{
			for(int j=i-k+1;j<=i;j++) a[j]-=2;
			dfs(c+1);
			for(int j=i-k+1;j<=i;j++) a[j]+=2;
		}
	}
	k=0;
	for(int i=3;i<=14;i++) 
	{
		if(a[i]<3){k=0; continue;}
		k++;
		if(k>=2)
		{
			for(int j=i-k+1;j<=i;j++) a[j]-=3;
			dfs(c+1);
			for(int j=i-k+1;j<=i;j++) a[j]+=3;
		}
	}
	for(int i=2;i<=14;i++)
	{
		if(a[i]>=3)
		{
			a[i]-=3;
			for(int j=2;j<=15;j++)
			{
				if(j==i||a[j]<1) continue;
				a[j]--;
				dfs(c+1);
				a[j]++;
			}
			a[i]+=3;
		}
	}
	for(int i=2;i<=14;i++)
	{
		if(a[i]>=3)
		{
			a[i]-=3;
			for(int j=2;j<=14;j++)
			{
				if(j==i||a[j]<2) continue;
				a[j]-=2;
				dfs(c+1);
				a[j]+=2;
			}
			a[i]+=3;
		}
	}
	for(int i=2;i<=14;i++)
	{
		if(a[i]==4)
		{
			a[i]-=4;
			for(int j=2;j<=15;j++)
			{
				if(j==i||a[j]<1) continue;
				a[j]--;
				for(int z=2;z<=15;z++)
				{
					if(z==i||z==j||a[z]<1) continue;
					a[z]--;
					dfs(c+1);
					a[z]++;
				}
				a[j]++;
			}
			a[i]+=4;
		}
	}
	for(int i=2;i<=14;i++)
	{
		if(a[i]==4)
		{
			a[i]-=4;
			for(int j=2;j<=14;j++)
			{
				if(j==i||a[j]<2) continue;
				a[j]-=2;
				for(int z=2;z<=14;z++)
				{
					if(z==i||a[z]<2) continue;
					a[z]-=2;
					dfs(c+1);
					a[z]+=2;
				}
				a[j]+=2;
			}
			a[i]+=4;
		}
	}
	int tmp=c;
	for(int i=2;i<=15;i++)
	{
		if(a[i]!=0)
			tmp++;
	}
	da=min(da, tmp);
}
int main()
{
	int t,n,z,zz;
	cin>>t;
	while(t--)
	{
		
		memset(a,0,sizeof(a));
		da=999999999;
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>z>>zz;
			if(z==0) a[15]++;     
			else if(z==1) a[14]++; 
			else a[z]++;
		}
		dfs(0);
		cout<<da<<endl;
	}
	return 0;
}
2025/7/29 08:40
加载中...