【考试总结2021-02-15】 串题

生成膜咒

题里面的定义就是 (border),求所有子串的每个前缀的 (border) 的和,深度就是 (border) 的个数

考虑添加一个字符对答案的贡献就是它对应的每个后缀的 (border) 的个数

转到 (SAM) 上发现如果当前 (endpos) 集合的大小大于 (1) 那么对答案就有 ((len_x-len_{fa[x]}) imes (sz[x]-1))

离线搞出来后缀树,树剖线段树进行链加和查询增量即可

在线就是 (LCT),复杂度还少 (log)

simulate

这题主要是考虑每个点的减少带来的连锁反应,具体而言,设当前点为 (i)([1,i-1]) 的所有数已经小于 (2),同时用栈来维护所有 (0) 的位置

分两种情况

  • (a[i-1]=0):对应将这个点减少 (1),栈顶弹掉,(a_{i+1}) 增加 (1)

  • (a[i-1] eq 1):手玩一下发现情况是 (st[top]) 右移,(a_{i+1}) 增加 (1)(a[i]) 减少 (1)

所以模拟即可,真的不超过联赛难度吧,没做出来真的不应该吧

circle

首先如果钦定的 (k) 个点有环,那么直接 (impossible)

有一个结论:强连通竞赛图必然存在不小于 (3) 元环,归纳可以证

那么需要删掉所有的三元环,(60') 的暴力就是 (Theta(n^3)) 找环

考虑图上三元环的构成,合法的只能是两个被钦定或者一个被钦定(三个钦定的就不是 (DAG) 了,三个没有被钦定的无环是题设)

一个没有被钦定的直接删掉,最后需要考虑的就是两个被钦定的删哪个

设不被钦定点 (x) 向被钦定点连边的序列 (S)(S_i) 表示 (x) 向被钦定点中拓扑序为 (i) 连边的方向,(A) 表示指向,(B) 表示被指向

如果有 (B)(A) 后面出现,那么这个点必删

考虑剩下的点的 (B)(A) 的分界线位置,共存问题就被转化成了二维偏序

时间复杂度 (Theta(n^2))

原文地址:https://www.cnblogs.com/yspm/p/14404092.html