(A)
模拟。 时间复杂度 : (O(N))
(B)
考虑两个数怎样排更优。 时间复杂度 : (O(NlogN))
(C)
一个数在经过一次操作后贡献就是 (0) 了。
所以维护最大值的线段树 , 每次在上面找未被删除的 , 贡献清零后权值变为 (-infty)。
每个数最多删一次 , 时间复杂度 (O(NlogN))
(D)
假设初始区间 ([l , r]) 对应坐标轴原点。
那么删前面的相当于从 ((x , y)) 走到 ((x + 1 , y)) , 删后面的相当于走到 ((x , y + 1))。
注意到若 ((x + 1 , y + 1)) 必败 , 那么 ((x , y)) 必败 , 若 ((x + 1 , y + 1)) 和 ((x + 2 , y + 2)) 必胜 , 则 ((x , y)) 必胜。
因此询问等价于询问右上最大点的状态。
时间复杂度 : (O(QlogN))