样例过了的,自己手动模拟感觉没问题,求助
查看原帖
样例过了的,自己手动模拟感觉没问题,求助
601674
zldy楼主2022/11/13 11:36

要使|x-y|+|y-z|和最小值最大,按照样例的意思,本蒟蒻的思路为
将序列a排序,然后使最大值与最小值分别放入相邻的背包中,再比较次小值与最小值的差(min')和次大值和最大值的差(max')中的较大值
思路是否有问题?
或者代码写的有问题?
样例能过 提交 只ac一个

#include<bits/stdc++.h>
using namespace std;
int a[200002];
int main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        sort(a+1,a+1+n);
        int ans=0;
        ans+=a[n]-a[1];
        ans+=max(a[2]-a[1],a[n]-a[n-1]);
        cout<<ans<<"\n";
    }
    return 0;
}
2022/11/13 11:36
加载中...