社区讨论

求神犇帮看看

灌水区参与者 2已保存回复 15

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
15 条
当前快照
1 份
快照标识符
@lo7k22w9
此快照首次捕获于
2023/10/27 03:06
2 年前
此快照最后确认于
2023/10/27 03:06
2 年前
查看原帖
要使|x-y|+|y-z|和最小值最大,按照样例的意思,本蒟蒻的思路为 将序列a排序,然后使最大值与最小值分别放入相邻的背包中,再比较次小值与最小值的差(min')和次大值和最大值的差(max')中的较大值 思路是否有问题? 或者代码写的有问题? 样例能过
CPP
#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;
}

回复

15 条回复,欢迎继续交流。

正在加载回复...