题解 | #中位数#
中位数
https://ac.nowcoder.com/acm/contest/11177/A
中位数
(考时脑壳抽了
思路其实很简单
容易知道最终序列长度为
如果不操作,最小的中位数,即为位置为
我们把删去的数全都往中位数右边的数加即可,中位数不变 的序列中位数最小值 就是位置
如果,原序列和即为所求
记得排序(
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int t;const int maxn=2e5+10;
int n,k;
int m[maxn];
int main(){
cin>>t;
while(t--){
cin>>n>>k;long long ans=0;
for(int i=1;i<=n;++i) cin>>m[i],ans+=m[i];
sort(m+1,m+1+n);
if(k==n-1) cout<<ans<<endl;
else cout<<m[(n-k+1)/2]<<endl;
}return 0;
}(蒟蒻只能写这道题题解
查看16道真题和解析