当前位置: 首页 > news >正文

Splitting Items

爱丽丝和鲍勃有 nn 件物品想要分配,所以他们决定玩一个游戏。所有物品都有一个成本,第 ii 件物品的成本是 aiai​。玩家轮流行动,从爱丽丝开始。

在每一轮中,玩家选择剩下的物品之一并将其拿走。游戏一直进行,直到没有物品剩下。

假设 AA 是爱丽丝所拿物品的总成本,BB 是鲍勃所拿物品的总成本。那么游戏的最终 得分 将等于 A−BA−B。

爱丽丝想要最大化得分,而鲍勃想要最小化得分。爱丽丝和鲍勃都会采取最优策略。

但是游戏将在明天进行,所以今天鲍勃可以稍微修改成本。他可以将几个(可能是没有或全部)物品的成本 aiai​ 增加一个整数值(可能是相同的值或每个物品不同的值)。然而,总的增加必须小于或等于 kk。否则,爱丽丝可能会怀疑什么。请注意,鲍勃 不能降低 成本,只能增加。

鲍勃能达到的最低可能得分是多少?

输入

第一行包含一个整数 tt (1≤t≤50001≤t≤5000) — 测试用例的数量。接下来有 tt 个案例。

每个测试用例的第一行包含两个整数 nn 和 kk (2≤n≤2⋅1052≤n≤2⋅105; 0≤k≤1090≤k≤109) — 物品的数量和鲍勃可以进行的最大总增加。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana1​,a2​,…,an​ (1≤ai≤1091≤ai​≤109) — 物品的初始成本。

保证所有测试用例的 nn 之和不超过 2⋅1052⋅105。

输出

对于每个测试用例,打印一个整数 — 鲍勃在增加了几个(可能是没有或全部)物品的成本后,最低可能得分 A−BA−B。

示例

InputcopyOutputcopy
4
2 5
1 10
3 0
10 15 12
4 6
3 1 2 4
2 4
6 9
4
13
0
0

注意

在第一个测试用例中,鲍勃可以将 a1a1​ 增加 55,使得成本变为 [6,10][6,10]。明天,爱丽丝将拿走 1010,鲍勃将拿走 66。总得分将等于 10−6=410−6=4,这是最低可能的得分。

在第二个测试用例中,鲍勃不能改变成本。因此得分将等于 (15+10)−12=13(15+10)−12=13,因为爱丽丝将拿走 1515,鲍勃将拿走 1212,而爱丽丝 — 1010。

在第三个测试用例中,鲍勃例如可以将 a1a1​ 增加 11,a2a2​ 增加 33,a3a3​ 增加 22。总变化等于 1+3+2≤61+3+2≤6,成本将变为 [4,4,4,4][4,4,4,4]。显然,得分将等于 (4+4)−(4+4)=0(4+4)−(4+4)=0。

在第四个测试用例中,鲍勃可以将 a1a1​ 增加 33,使得成本变为 [9,9][9,9]。得分将等于 9−9=09−9=0。

//因为两人每次都是一定拿最大的那个数,所以把数字按从大到小排序过后,每次只需要再Bob拿的时候,将Bob要拿的数加到不大于前一个数直到m为0或者数拿完了
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int a[N];
signed main(){int t;cin>>t;while(t--){int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+1+n,greater<int>());for(int i=2;i<=n;i+=2){if(m<=0)break;int h=a[i-1]-a[i];if(h<m){a[i]+=h;m-=h;}else{a[i]+=m;m=0;}}int num=0,num1=0;int g=1;for(int i=1;i<=n;i++){if(g%2==1){num+=a[i];}else{num1+=a[i];}g++;}int v=num-num1;cout<<v<<endl;}} 

http://www.xdnf.cn/news/791407.html

相关文章:

  • torch.nn中的各种组件
  • element级联地址选择器
  • java类的生命周期
  • Make All Equal
  • 2.2.2 06年T3
  • LeetCode 152. 乘积最大子数组 - 动态规划解法详解
  • 集成学习三种框架
  • C++中的指针参数传递与引用参数传递详解
  • 5985/wsman 是什么?
  • 一、基础环境配置
  • Linux中实现用户态DMA直通访问的零拷贝机制
  • 《Spring Bean 是怎么被创建出来的?容器启动流程全景分析》
  • 小体积涵盖日常办公等多功能的软件
  • MyBatis实战项目测试
  • 2025.6.3学习日记 Nginx 基本概念 配置 指令 文件
  • React-native之Flexbox
  • nginx 如何禁用tls1.0
  • CSS radial-gradient函数详解
  • JVM-内存结构
  • MAU算法流程理解
  • VueUse:组合式API实用函数全集
  • ADI硬件笔试面试题型解析上
  • DevEco Studio的使用
  • VUE组件库开发 八股
  • 时态--10--被动语态
  • Selenium 中 JavaScript 点击操作的原理及应用
  • Java:跨越时代的编程语言,持续引领技术革新
  • IPython 使用技巧整理
  • 强化学习鱼书(10)——更多深度强化学习的算法
  • Spring AI 项目实战(一):Spring AI 核心模块入门