和上题类似,考虑随一个序列贪心。 因为没有多测,为保证正确性,考虑卡时。 然后就没什么难的了。 1234567891011121314151617181920#include<bits/stdc++.h>using namespace std;int n,a[25][25],b[1005],g[25][25],ans=2e9;mt19937 rd((unsigned long long)new char);int main(){ cin>>n; for(int i=1;i<=n;++i) for(int j=1;j<=3;++j){int x;cin>>x;a[i][x]=1;} for(int i=1;i<=n;++i)b[i]=i; while(1.0*clock()/CLOCKS_PER_SEC<=0.985){ shuffle(b+1,b+n+1,rd); int cnt=0; for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) if(a[b[i]][b[j]])cnt+=abs(i-j); ans=min(ans,cnt/2); } cout<<ans<<'\n'; return 0;}