删数游戏

· · 题解

删数游戏(Part 0)

基本思路:

  1. 利用前缀和优化
  2. 枚举所有可能

    代码:

#include <bits/stdc++.h>
using namespace std;
int T,n,k,a[100010];
long long mx,s[100010];//开long long 
int main(){
    ios::sync_with_stdio(0);cin.tie(0);//优化输入 
    cin>>T;
    while(T--)
    {
        mx=0;
        cin>>n>>k;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        sort(a+1,a+1+n);
        for(int i=1;i<=n;i++)
        {
            s[i]=s[i-1]+a[i];//前缀和 
        }
        for(int i=0;i<=k;i++)//枚举所有情况 
        {
            int x=i,y=(k-i)*2;//x:删几个最大值;y:删几个最小值 
            long long q=s[n-x]-s[y];
            mx=max(mx,q);
        }
        cout<<mx<<'\n';
    }
    return 0;
}