问题 4771 --更改数值

4771: 更改数值★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 16  解决: 7
[提交][状态][命题人:]

题目描述

给你一个数组a1,a2,......,an和数字k。
每一步你可以选一个数i,将ai减一;
或选两个数i,j,使ai等于aj.
若想使a1+a2+......+an<=k,请问你最少需要操作几次?
(允许出现负数)

输入

第一行包括一个数t(1<=t<=10000)为数据组数。每组数据第一行包括两个数n和k(1=<n<=200000,1=<k<=1000000000000000),分别表示a数列的大小,和最终要求a数列数字之和的上界。
每组数据第二行包括n个数a1,a2,......,an(1=<ai<=1000000000),即为数列。
保证所有数据的n之和不超过200000.

输出

每组数据使a1+a2+......+an<=k的最少操作次数。
样例输入
Copy
4
1 10
20
2 69
6 9
7 8
1 2 1 3 1 2 1
10 1
1 2 3 1 2 6 1 6 8 10
样例输出
Copy
10
0
2
7

提示

样例1中,可使a1减少10次。
样例2已经满足要求,不用改变它。
样例3:第一步,让a4=a3=1,第二步,将a4减一。
样例4:将a7减少3次使a7=-2.再使a6,a8,a9,a10等于a7,共需7步。

来源

[提交][状态]