非常开心,所有代码都咕掉了/cy
T1
简单计数题,树状数组维护即可。
T2
线段树维护,如果一个区间整除某个数的时候都等价于减同一个数,那么就打上区间减法的标记。
复杂度玄学,但是能过。
T3
把正着做换成倒着做,把操作变成减去两边的数。
考虑最大的那个数,显然在它没有变化的情况下两边的数都不能进行操作,所以如果它没有变成目标状态,就肯定要给它进行操作。
于是一个优先队列维护最大值就做完了。
T4
显然先要求出每个点的最小长度。
把每一条边分成多个,建几个虚点,然后按最短长度分层。
每一层做,先按字典序排序,然后更新后面。注意如果两个点的答案完全相同那么要一起更新。
T5
想了个假做法还乐滋滋的感觉自己菜得要死……
首先把询问的时候有环的情况判掉。
根据最小生成树的理论,询问的时候权值不同的边是独立的。
离线,按权值一种一种地做。每次把某个询问的集合加进去看是否有环,然后可撤销并查集退回去。