首先看到这道题就知道这个询问肯定可以转化为判断某个条件。
考虑构造这个条件。
设这个序列为 {ai},对于一个询问 Z c s,我们首先贪心地选择 ≥s 的数来减,减不够了再用 <s 的。
于是设 cnt=n∑i=1[ai≥s],sum=n∑i=1[ai<s]ai。
条件即 sum≥(c−cnt)s。
这个显然是必要条件,但是充分性还有待考虑,因为我们无法确定剩下还能选够 c 个数。
注意到 <s 的数最少也只能有 ⌈sums−1⌉ 个。
然后注意到 ⌈sums−1⌉≥sums−1>sums⟹⌈sums−1⌉+cnt≥c。
故 sum≥(c−cnt)s 对询问的充分性成立。
随便挑个数据结构维护下就行了。
代码:
1 |
|