bzoj4545】的更多相关文章

[BZOJ4545]DQS的trie Description DQS的自家阳台上种着一棵颗粒饱满.颜色纯正的trie. DQS的trie非常的奇特,它初始有n0个节点,n0-1条边,每条边上有一个字符.并且,它拥有极强的生长力:某个i时刻,某个节点就会新生长出一颗子树,它拥有si个节点且节点之间的边上有一个字符,并且新生长出来的子树也是一个树结构.然而因为是新长出来的,根据生活常识可知si必定不会大于i时刻之前的树的大小. DQS定义trie的子串为从根节点(1号节点)往下走到所有节点所构成的字…
BZOJ4545: DQS的trie https://lydsy.com/JudgeOnline/problem.php?id=4545 分析: 对trie用dfs建sam复杂度是\(O(n^2)\)的,因为你不能让一个复杂度带均摊的东西去一直回溯. 构造数据卡也很好卡,一条链边全是a,每个点连出去一条不是a的边. 于是我们用bfs建sam,这样复杂度是对的? 说这道题的做法,第一个询问每次插入时动态维护即可,第二问操作我们用lct维护后缀链接树. 代码: #include <cstdio>…
lct+SAM bzoj4516+bzoj2555 这道题唯一的用处就是教会了我真正的广义SAM dfs时保留当前节点在后缀自动机中的位置,每个点接着父亲建 lct动态维护right集合大小,用lct维护子树就行了 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ; struct edge { int nxt, to, w; } e[N << ];…
特别鸣神犇 fcwww 替我调出了无数个错误(没他的话我都快自闭了),祝大佬省选rp++ 板子题,给我写了一天QAQ...... 用 LCT 维护后缀树,暴力更新用 LCT 区间更新链即可 其实,在计算本职不同子串的时候很多网友算的都有点麻烦 不管实在后缀自动机,还是广义后缀自动机中,动态更新本质不同子串数量用最后新加的点更新即可,和其他点是无关的. Code: #include <queue> #include <cstdio> #include <algorithm>…