集训Day7

在做过的试题里ran的...发现之前做的题有些已经生疏了

bzoj3626 LCA

一棵树,每次询问在$[l,r]$区间内的每个节点$i$与$z$的最近公共祖先的深度之和

假的LCA

有一个很平凡的想法是,如果你把x到root这条路径都赋值为1,那$DEPTH_{lca(x,y)}$就是y到root的边权和

我们离线操作

从1到n每个点做一次上述的赋值1+查询的操作就可以了

同时我们注意到$[l,r]$实质上可以化为两个前缀之差

于是这题就做完了

bzoj2946

给你5个串,求他们的最长公共子序列

串长不超过2000

建出第一个串的SAM,后面几个串依次在上面跑,一个串的len取max,五个串的len取min就可以了

bzoj2724(我为什么会ran到这道题

强制在线区间众数

分块,我们用$ZS_{i,j}$表示第i块到第j块的众数

然后注意到我们查找一个数在一个区间里出现次数只用把序列按权值和位置两个关键字排序然后二分查找

这样我们对于完整的块直接询问

不完整的块暴力二分

预处理众数...yy一下就可以了

原文地址:https://www.cnblogs.com/Kong-Ruo/p/9201294.html