一道树状数组,一道图论,一道树链剖分
seqmod:如何将边权有序求和
先了解一下暴力30
模拟一下可以知道怎么处理
处理边权:将边权赋给它连接的两点(u,v)中的v
求和:(求lca,从链的两边往上跳,跳到lca)
有序:往上跳的时候,右子树(下几层)下面的点值最大,正序推
左子树(下几层)点值最小,逆序推
再了解一下大佬教的正解
大致思想:其实处理的很像是快读,ret=ret*10+p
但是很明显的是你一个个往上跳绝对绝对会超时,这时候我们就想到了倍增-->一次跳2的几次幂,那么这时候乘的肯定就不是2的0次方了而是2的i-1次方
我们考虑从下往上合并时的通解,(从上往下就同理,很好想了),跳一步合并的是a*10+b(下面的链是a,上面的是b)详见p201算法竞赛,那么跳2的i-1,通解就是a*10^2^(i-1)+b
rotinv : 树状数组求逆序对
去推如何从上一个状态到下一个状态(因为不可能每一个序列求一次逆序对),去找递推式
求逆序对:归并排序(O(N+M)logM)还是很大的
rise:惊不惊喜
它其实是道图论题
首先肯定考虑相邻的,前面的大后面一定看不到,那么就把其建一条边,用dfs