K-Knowledge Test about Match

题目传送门

分析:总体走势肯定是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("");
    }
}
posted @ 2021-07-20 10:11  GUO_dx  阅读(67)  评论(0)    收藏  举报