我竟然把洛谷评测机卡过去了
查看原帖
我竟然把洛谷评测机卡过去了
87064
ducati楼主2020/10/26 23:01

RT

#include <bits/stdc++.h>
using namespace std;
const int maxl=505;

int n,len=0;
int a[maxl],ans[maxl],tmp[maxl];

bool cmp(int x,int y)
{
	return x>y;
}

bool check(int x)
{
	int pos=0,jj=1,sumv=0;
	for (int i=1;i<=n;i++)
	{
		if (i!=x)  tmp[++pos]=a[i],sumv+=tmp[pos];
	}
	if (sumv&1)  return false;
	for (int i=1;i<=pos;i++)
	{
		sort(tmp+i+1,tmp+pos+1,cmp);
		for (int j=i+1;j<=pos;j++)
		{
			if (!sumv)  break;
			
			if (!tmp[i])  break;
			if (tmp[j])  tmp[i]--,tmp[j]--,sumv--;
			else break;
		}
		if (!sumv)  break;
	}
	for (int i=1;i<=n;i++)
	{
		if (tmp[i])  return false;
	}
	return true;
}

signed main()
{
	cin>>n;
	n++;
	for (int i=1;i<=n;i++)  cin>>a[i];
	for (int i=1;i<=n;i++)
	{
		if (check(i))  ans[++len]=i;
	}
	cout<<len<<endl;
	for (int i=1;i<=len;i++)  cout<<ans[i]<<endl;
	
	return 0;
}

这个代码的复杂度是O(n3logn)O(n^3logn)的,但是加了O2O2就过了!

建议加强数据。

2020/10/26 23:01
加载中...