摘要:
线段树维护区间,比较好像,思路清晰一点的话可以很快地写出来。维护4个域:add,加标记mul,乘标记size,范围大小key,区间和考虑4种情况:++,**,*+,+*前3种显然直接搞一下就行了,在区间上打标记(这里我们设置是打了标记的同时计算区间和)。先加在乘需要想想,对于一个X+C的式子,如果在外面乘了一个D的话成了D(X+C),去括号变成DX+DC,于是第4种情况既要修改乘标记,又要修改加标记。注意,乘和加标记代表的都是给区间的每一个数乘或加一个数,所以mul对key的影响是key*mul,而add的影响是key+add,注意永远是先乘再加。最后就是注意一下数组下标不要越界,数不要撑爆( 阅读全文
摘要:
莫队算法,搞定!思路很简单:对于每个询问,我们把它看成(l[i],r[i])这样一个平面上的点,那么询问之间的转移可以看成点之间的曼哈顿距离。那么我们要找到最小的距离怎么做呢?1.曼哈顿路径,这个不好搞。2.曼哈顿最小生成树,据说这个的权和是1的2倍,总之可以搞。那么我们先要搞定manhattan最小生成树。如有n个点,那么复杂度是n^2的。这样肯定不行。根据定理,每个点出发向8个方向的范围内最多只与一个点相连,那么我们只要想这8个点连边建图,这样只会有8n条边(去重了还剩4n),把这个图建出来,最小生成树就很好搞了。给个链接:http://wenku.baidu.com/view/1e487 阅读全文