题目传送门
分析:总体走势肯定是b大致从小到大排序的,但是比如{0,1}和{1,2},会发现b={2,1}时更优
代码:
#include<bits/stdc++.h>
using namespace std;
int a[10001];
double cal[1000001];
double calc(int a,int b){
return cal[abs(a-b)];
}
int main(){
int T;
for(int i=1;i<=100000;i++)cal[i]=sqrt(i);
cin>>T;
int tmp=T;
while(T--){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
for(int y=1;y<=3;y++)
for(int l=n-1;l>=0;l--){
for(int r=n-1;r>=0;r--){
if(calc(a[l],l)+calc(a[r],r)>calc(a[l],r)+calc(a[r],l)){
swap(a[l],a[r]);
}
}
}
for(int i=0;i^n;i++)printf("%d ",a[i]);
puts("");
}
}