本题数据有锅
查看原帖
本题数据有锅
284013
Lyz09G410/G407楼主2023/8/10 07:49

本题赛后加的数据有锅,本人的ac代码在 N=106N=10^6 时能过,而 N=2.5×106N=2.5\times 10^6 时最后一个点会wa。

附上本人代码

#include<iostream>
#include<bitset>
using namespace std;
#define N 1000010
int t,n,a[N],f[2][N];
bitset<N> s,b,c;
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>n;
		int sum=0;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
			sum+=a[i];
		}
		a[n+1]=0;
		if(sum%n==0)
		{
			int p=sum/n;
			s.reset();
			b.reset();
			b.set(0);
			s.set(0);
			for(int i=1;i<=n;i++)
			{
				a[i]-=p;
				if(a[i]==0)
				{
					puts("Yes");
					goto loop;
				}
				if(a[i]>0)
				{
					b|=b<<a[i];
				}
				else
				{
					s|=s<<(-a[i]);
				}
			}
			c=s&b;
//			for(int i=0;i<=n;i++)
//			 cout<<s[i]<<" ";
//			cout<<"}"<<endl;
//			for(int i=0;i<=n;i++)
//			 cout<<b[i]<<" ";
//			cout<<"}"<<endl;
			if(c.count()>2)
			 puts("Yes");
			else
			 puts("No");
		}
		else
		 puts("No");
		loop:
			;
	}
}
2023/8/10 07:49
加载中...