摘要: 后缀树+虚树 做这道题我们需要知道这么几个东西 两个后缀的$lcp$就是其后缀树上的$lca$ 用一个字符串的反串建$sam$,其$parent$边就构成了原串的后缀树 这道题要求询问$k$个后缀两两之间$lcs$之和,转化到后缀树中就是问这$k$个点任意两个点$lca$处值相加 考虑树形$DP$, 阅读全文
posted @ 2018-12-04 21:02 nianheng 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机+线段树 先建出$sam$,统计一遍每个点的$right$集合大小$siz$,对于$siz=1$的点$x$,他所代表的子串只会出现一次,设$y=fa[x]$,则这个点代表的子串即为$(1...len[x] len[y],len[x])$,对于子串$(len[x] len[y],len[x] 阅读全文
posted @ 2018-12-04 20:49 nianheng 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 计算几何大模板 ~~~cpp include include include include include include include using namespace std; const int maxn=1e5+100; const double Pi=3.1415926535897932 阅读全文
posted @ 2018-12-04 20:19 nianheng 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 虚树第一题 对于每次询问的点建立一棵虚树,然后在树上DP,一个点的答案就是这个点的父边切断的代价与所有儿子切断的代价去最小值,当然如果这个节点是资源点则必须切父边 注意在虚树上一条边的代价应该是中间所有边代价的最小值,在这道题里可以用到根节点边的最小值 建虚树的时候可以不去建那些在其他资源点下面的资 阅读全文
posted @ 2018-12-04 20:16 nianheng 阅读(116) 评论(0) 推荐(0) 编辑
摘要: $trie$树建广义后缀自动机: $dfs$遍历$trie$树,将树上的一个节点插入$sam$时,将他的$fa$在$sam$上所在的节点作为$last$ cpp include include include include include include using namespace std; 阅读全文
posted @ 2018-12-04 20:05 nianheng 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 广义后缀自动机+DP 对于作文库建出广义后缀自动机,广义自动机就是在每次添加一个字符串之前把$last=0$,然后正常添加就好了 对于每个询问串,预处理出每个位置$i$能向前匹配的最长长度$pp[i]$。 二分长度$L$,对于位置$i$,设往前匹配到$j$,满足$i pp[i] include in 阅读全文
posted @ 2018-12-04 19:59 nianheng 阅读(122) 评论(0) 推荐(0) 编辑