11 2020 档案

摘要:点分治 核心思路是先加入这个点的贡献,然后删除树上这个点,每次删的点是该子树的重心 给定一个有N个点(编号0,1,…,N-1)的树,每条边都有一个权值(不超过1000)。 树上两个节点x与y之间的路径长度就是路径上各条边的权值之和。 求长度不超过K的路径有多少条。 输入格式 输入包含多组测试用例。 阅读全文
posted @ 2020-11-18 22:04 /Ranger 阅读(76) 评论(0) 推荐(0)
摘要:#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 阅读全文
posted @ 2020-11-17 15:45 /Ranger 阅读(103) 评论(0) 推荐(0)
摘要:sa表示排名第 i 位的后缀是sa[i]~n rk表示i~n这段子串排名为rk[i] height表示与排名在上一后缀的相同前缀长度为height[i] 后缀数组统计不同子串的数量 子串是后缀的前缀 ans = 所有子串((len + 1) * len / 2) - 相同前缀数量(height之和) 阅读全文
posted @ 2020-11-16 21:23 /Ranger 阅读(102) 评论(0) 推荐(0)
摘要:一、SAM的性质: SAM是个状态机。一个起点,若干终点。原串的所有子串和从SAM起点开始的所有路径一一对应,不重不漏。所以终点就是包含后缀的点。每个点包含若干子串,每个子串都一一对应一条从起点到该点的路径。且这些子串一定是里面最长子串的连续后缀。SAM问题中经常考虑两种边:(1) 普通边,类似于T 阅读全文
posted @ 2020-11-16 13:59 /Ranger 阅读(87) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/tomandjake_/article/details/81083703 阅读全文
posted @ 2020-11-14 20:35 /Ranger 阅读(34) 评论(0) 推荐(0)