08 2017 档案
摘要:设$d[x]$表示端点位于$x$子树内部的非树边条数,那么有两种情况: $1.$割去的两条树边$(x,fa[x]),(y,fa[y])$中,$x$是$y$的祖先,那么此时需要割去的非树边数量为$d[x]-d[y]$。 显然固定$x$之后$y$越靠上越好,因此$y$一定是$x$的儿子,枚举即可,时间复
阅读全文
摘要:用SAM支持往末尾在线添加字符的功能。 设$f[i][j]$表示右端点为i的每个左端点的答案,那么当$i$变为$i+1$时,在SAM的parent链形成的树中会新增一个叶子$p$。 对于每个节点,维护它最后一次出现的位置的右端点$v$,那么加入$p$的时候,需要把它到根路径上所有节点的$v$都改为$
阅读全文
摘要:首先通过DFS序将原问题转化为序列上区间加、询问区间kth的问题。 考虑分块,设块大小为$K$,每块维护排序过后的$pair(值,编号)$。 对于修改,整块的部分可以直接打标记,而零碎的两块因为本来有序,故可以按照修改区间将其分离成两个有序序列$A$(不在修改区间)和$B$(在修改区间)。 对$B$
阅读全文
摘要:不难发现题中过程对应着动态维护关于$C$的最大生成树。 为了让$D$最大,同时让字典序最大,那么最后得到的一定是按$pair(C,D,编号)$排序的最大生成树。 对于每条非树边$(u,v,C)$,那么它要早于树上$u$到$v$路径上任意一条同$C$值的边出现。 而非树边之间显然不存在限制关系,因此非
阅读全文
摘要:维护一个保护集合$S$,表示哪些点$A$可能胜利。 首先将所有绿点加入$S$。 $1.$对于一个不在$S$的$A$点,若它存在某个后继在$S$中,则将其加入$S$。 $2.$对于一个不在$S$的$B$点,若它所有后继都在$S$中,则将其加入$S$。 通过拓扑可以$O(n+m)$求出$S$集合,那么剩
阅读全文
摘要:枚举子串的中心,往两侧扩展,将两侧对应位置的字符交替写下来,得到一个字符串$S$。 若前后长度为$L$的子串循环同构,则在$S$中它们对应长度为$2L$的前缀,需要满足它可以由不超过$2$个偶回文串拼接而成。 有一个结论是,若$S=uv$,其中$uv$都是偶回文串,那么要么$u$是$S$的最长偶回文
阅读全文
摘要:把$($看作$-1$,$)$看作$1$,设$a$为前缀和,则相当于找两个位置$x,y$使得$a[x]=a[y]$,且$a[x]$是$[x,y]$的区间最大值。 求出询问区间的最大值$o$,然后找到$o$在该区间内最左和最右的出现位置,将其作为答案。 那么剩下的答案只可能在$[l,o)$或$(o,r]
阅读全文
摘要:线段树维护每个点的最有可能是答案的数以及它的权重。 合并两个节点的时候,将权重互相抵消,保留较大的那一个。 得到答案后,再在对应权值的Treap中查询出现次数,检查是否真正是答案。 时间复杂度$O(n\log n)$。
阅读全文

浙公网安备 33010602011771号