这场比赛我没做,简单写一下题解。
T1:首先把所有的被减数从小到大排序,那么每次就是选取最大的c个来减。但是为了维护减完之后的序列还是从小到大的,我们不能直接把后c个减1。我们要找出a[n-c+1]所在的区间的前几个,把这几个减1,其他的不变。具体可以用线段树维护。
T2:首先考虑只有x和y时怎样做。我们肯定是先假定全部选x,然后选取y-x最大的Y个。
当加入了一维z之后,我们还是假定先全部选x。然后按照z-x从大到小排序,接着枚举一个分界线,分界线之前的选择z-x最大的Z个,分界线之后的选择y-x最大的Y个。这个是可以O(n)做到的。
T3:题解待更新