失败尝试不会带来任何收益,只会让锋利度 K 减少 1,因此最优策略中一定不会主动选择失败的尝试。问题可以转化为:
选择尽可能多的荆棘,并安排一个顺序,使得第 j 次成功砍断时,当前锋利度满足:
K−(j−1)≥ai林中共有 n 株荆棘,第 i 株的坚硬度为 ai,宝刀的初始锋利度为 K。拉布可以选择任意数量的荆棘,每株至多尝试一次,并以任意顺序依次尝试砍断。每次尝试遵循以下规则:
拉布可以放弃任意荆棘(放弃不消耗锋利度)。请计算在最优策略下,最多能成功砍断多少株荆棘。
每个测试文件包含多组测试数据。第一行输入一个整数 T(1≤T≤105)表示数据组数,每组测试数据描述如下:
每组输入一行两个整数 n,K(1≤n≤2×105,1≤K≤109)。
接下来一行输入 n 个整数 a1,a2,…,an(1≤ai≤109)。
保证所有测试数据的 n 之和不超过 2×105。
对于每组测试数据,输出一个整数,表示在最优策略下最多能成功砍断的荆棘数量。
输入
3
5 5
2 1 4 10 3
2 1
10 10
3 3
3 3 3
输出
4
0
1
说明