全WA
  • 板块UVA10364 Square
  • 楼主zhangymst
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/18 16:48
  • 上次更新2025/1/18 19:59:11
查看原帖
全WA
774230
zhangymst楼主2025/1/18 16:48
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+7;
int a[N],n,bc;bool dp[1025][4][N];
int zh(vector<int> z)
{
	int ans=0,bl=1;
	for(int i=0;i<n;i++)
	{
		if(z[i]==1)
		{
			ans+=bl;
		}
		bl*=2;
	}
	return ans;
}
int f(vector<int> x,int bs,int xbc)
{
//	cout<<zh(x);
	int i,ans=0;
	if(bs==3) return 1;
	if(xbc>bc) return 0;
	if(xbc==bc)	
	{
		return f(x,bs+1,0);
	}
	if(dp[zh(x)][bs][xbc]!=-1)
	{
		return dp[zh(x)][bs][xbc];
	}
	for(i=0;i<n;i++)
	{
		if(x[i]==1)
		{
			x[i]=0;
		//	cout<<a[i];
			ans|=f(x,bs,xbc+a[i]);
			x[i]=1;
		}
	}
	dp[zh(x)][bs][xbc]=ans;
	return ans;
}
int main()
{
	int T,t;
	cin>>T;
	for(t=0;t<T;t++)
	{
		int i,ans=0,j,k;
		cin>>n;
		for(i=0;i<2049;i++)
		{
			for(j=0;j<4;j++)
			{
				for(k=0;k<N;k++)
				{
					dp[i][j][k]=-1;
					if(j==3)
					{
						dp[i][j][k]=1;
					}
				}
			}
		}
		for(i=0;i<n;i++)
		{
			cin>>a[i];
			ans+=a[i];
		}
		if(ans%4!=0)
		{
			cout<<"no";continue;
		}
		bc=ans/4;
		sort(a,a+n);
		vector<int> b(n,1);
		if(f(b,0,0))
		{
			cout<<"yes";
		}
		else
		{
			cout<<"no";
		}
	 } 
}

帮调

2025/1/18 16:48
加载中...