专栏文章

删数游戏

题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@miqhcp7w
此快照首次捕获于
2025/12/04 04:49
3 个月前
此快照最后确认于
2025/12/04 04:49
3 个月前
查看原文

基本思路:

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

代码:

CPP
#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;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...