不知道是我的参数不行还是代码有误,我的代码一直是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;
}
}