社区讨论
求神犇帮看看
灌水区参与者 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 条回复,欢迎继续交流。
正在加载回复...