题意:https://www.luogu.com.cn/problem/P4556 树链加数,问你每个节点最多的是哪个数。 思路: 树链加数很容易想到差分。 从下往上用权值线段树合并即可,直接用pushup把答案存在树根即可,不用每次查询最多的数 1 struct EDGE 2 { 3 int to ...
分类:
其他好文 时间:
2020-06-25 17:45:26
阅读次数:
57
如果不算数组开小和没开$long long$的话,我又是一遍过的。 思路很简单,考虑在线段树合并的时候,计算逆序对的贡献。 假设合并线段树$a$和$b$,则在区间$\left[l,r\right]$的时候, $a$在前所产生的逆序对个数为$a$的右子树的大小乘以$b$的左子树的大小。 $b$在前所产 ...
分类:
其他好文 时间:
2020-06-17 12:30:33
阅读次数:
40
keoj226 正解 把每一行当成一个字符串插入 trie 树。 对于一个左端点, trie 树上相同的节点表示一类相同的字符串(用 set 记录等价类)。 左端点往右边移动怎么做呢 ? 重新插入 trie 树 ? 类似线段树合并的 trie 树合并 + set 启发式合并即可。 复杂度顶满是所有的 ...
分类:
其他好文 时间:
2020-06-08 20:56:06
阅读次数:
94
前言 线段树合并:https://www.luogu.com.cn/blog/styx-ferryman/xian-duan-shu-ge-bing-zong-ru-men-dao-fang-qi 题意 给你一颗$n$个节点的树,每个节点都有权值且唯一,输出$n$行,输出的第$i$行应当给出有多少节 ...
分类:
其他好文 时间:
2020-05-26 00:50:25
阅读次数:
64
LINK: "字符串树" 先说比较简单的正解。由于我没有从最简单的考虑答案的角度思考 所以... 下次还需要把所有角度都考察到。 求x~y的答案 考虑 求x~根+y~根 2 lca~根的答案。 那么问题变成了 求某个点到根的边有多少条是以当前询问为前缀的。 前缀这个问题容易想到trie树 建立前缀t ...
分类:
Web程序 时间:
2020-05-11 22:02:46
阅读次数:
75
新学了一下笛卡尔树,这道题是模板题,统计一下以 $x$ 为 lca 的点对就行. 然后统计的话用线段树合并 + 启发式合并就行了. code: #include <bits/stdc++.h> #define N 100006 #define ll long long #define lson s[ ...
分类:
其他好文 时间:
2020-05-08 23:00:23
阅读次数:
78
LINK: "Security" 求一个严格大于T的字符串 是原字符串S[L,R]的子串。 容易想到尽可能和T相同 然后再补一个尽可能小的字符即可。 出于这种思想 可以在SAM上先跑匹配 然后枚举加哪个字符 判定即可。 判定s是否在[L,R]中出现过 最快的方法 就是right集了。 这个可以线段树 ...
分类:
其他好文 时间:
2020-05-05 20:11:36
阅读次数:
61
心路历程 $r l=r$的串若为A串且贡献为正即可加入,对于每一个B的位置预处理,时间复杂度$O(nlog_n+(r l)n+q)$ $r l 2000$后缀自动机+线段树合并,倍增找到点,跳endpos,跳的次数不会太多 SOL 数据有点特别啊~ $r l\in[51,2000]$和 2000做法 ...
分类:
其他好文 时间:
2020-04-01 13:15:21
阅读次数:
68
题意: 给出一个串 $S$,再给出 $n$ 个串 $T_i$, $q$ 次询问 $S[pl,pr]$ 在 $ T_{[l,r]}$哪个串出现次数最多。 solution: 不难想到我们找 $S[pl,pr]$ 是可以记录 $ed_{pr}$ 然后倍增上去找到这个区间所对应的 SAM 节点。 我们把 ...
分类:
其他好文 时间:
2020-03-23 00:03:32
阅读次数:
68
[GDOI2017] 取石子游戏(LCA) 题面 给出一棵树,每个点都有一个权值。对于每个节点,求去掉该节点的子树后,剩下所有节点的权值MEX(最小的没有出现的非负整数。) 分析 用权值线段树合并乱搞显然是可行的,但细节很多且需要卡常。 我们考虑所有权值为$i$的节点对答案的影响。求所有节点的LCA ...
分类:
其他好文 时间:
2020-03-22 19:30:23
阅读次数:
70