SA悬棺60ptsWA
查看原帖
SA悬棺60ptsWA
978200
aqzjklo楼主2025/7/11 08:08

不知道是我的参数不行还是代码有误,我的代码一直是WA+TLE

#include <bits/stdc++.h>
using namespace std;
int t,n,a[35];
int ans=INT_MAX;
const double bt=10000,et=1e-7,lt=0.975;
int work()
{
	int dick=0;
	for (int i=1; i<=n/2; i++)
	{
		dick+=a[i];
	}
	int bitch=0;
	for (int i=n/2+1; i<=n; i++)
	{
		bitch+=a[i];
	}
	return abs(dick-bitch);
}
int main()
{
	srand(time(0));
	srand(rand());
	cin>>t;
	while (t--)
	{
		ans=INT_MAX;
		int k=800;
		cin>>n;
		if (n==1)
		{
			cout<<n<<endl;
			continue;
		}
		for (int i=1; i<=n; i++)
		{
			cin>>a[i];;
		}
		ans=work();
		while (k)
		{
			double t=bt;
			while (t>et)
			{
				int x,y;
				x=rand()%(n/2)+1;
				y=rand()%(n-n/2)+n/2+1;
				swap(a[x],a[y]);
				int wans=work();
				int de=wans-ans;
				if (de <0)
				{
					ans=wans;
				}
				else if (double(rand())>exp(double(-de)/bt)*RAND_MAX)
				{
					swap(a[x],a[y]);
				}
				t*=lt;
			}
			k--;
		}
		cout<<ans<<endl;
	}
}
2025/7/11 08:08
加载中...