11 2020 档案
摘要:点分治 核心思路是先加入这个点的贡献,然后删除树上这个点,每次删的点是该子树的重心 给定一个有N个点(编号0,1,…,N-1)的树,每条边都有一个权值(不超过1000)。 树上两个节点x与y之间的路径长度就是路径上各条边的权值之和。 求长度不超过K的路径有多少条。 输入格式 输入包含多组测试用例。
阅读全文
摘要:#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 100010; int n, m; struct Node { int s[2], p, v; int sum
阅读全文
摘要:sa表示排名第 i 位的后缀是sa[i]~n rk表示i~n这段子串排名为rk[i] height表示与排名在上一后缀的相同前缀长度为height[i] 后缀数组统计不同子串的数量 子串是后缀的前缀 ans = 所有子串((len + 1) * len / 2) - 相同前缀数量(height之和)
阅读全文
摘要:一、SAM的性质: SAM是个状态机。一个起点,若干终点。原串的所有子串和从SAM起点开始的所有路径一一对应,不重不漏。所以终点就是包含后缀的点。每个点包含若干子串,每个子串都一一对应一条从起点到该点的路径。且这些子串一定是里面最长子串的连续后缀。SAM问题中经常考虑两种边:(1) 普通边,类似于T
阅读全文
摘要:https://blog.csdn.net/tomandjake_/article/details/81083703
阅读全文

浙公网安备 33010602011771号