#include <bits/stdc++.h>
#define MAX_TIME 1
using namespace std;
typedef long long ll;
//ifstream fin("");
//ofstream fout("");
int n;
int pos[1145];
int fr[1145][10];
mt19937 myrand(time(nullptr));
int g3t(){
int ans1=0;
for(int i=1;i<=n;i++){
ans1=ans1+abs(pos[i]-pos[fr[i][1]])+abs(pos[i]-pos[fr[i][2]])+abs(pos[i]-pos[fr[i][3]]);
}
return ans1;
}
int ans=INT_MAX;
void simulatedannealing(){
double begin=10000;
double end=1e-10;
double delta=0.996;
for(double t=begin;t>end;t*=delta){
int x=myrand()%n+1,y=myrand()%n+1;
//swap(cows[x],cows[y]);
swap(pos[x],pos[y]);
int now=g3t();
cout<<now<<'\n';
if(now<ans) ans=now;
else if (exp((ans-now)/t)<(double(rand())/RAND_MAX)) swap(pos[x],pos[y]);
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(nullptr);
cout.tie(nullptr);
cin>>n;
for(int i=1;i<=n;i++){
cin>>fr[i][1]>>fr[i][2]>>fr[i][3];
pos[i]=i;
}
//simulatedannealing();
while ((double)clock()/CLOCKS_PER_SEC < MAX_TIME) simulatedannealing();
cout<<ans/2;
return 0;
}
上述代码加了卡时 但是在我本地答案会直接输出ans预设的极大值,也就是说实际上一次sa都没有跑
但是交在洛谷就能过。
请问本地为什么会出现这样的情况 我的电脑也不算很差啊/yw