摘要: 题目 "链接" 看到$n\leq 20$,马上想到状压$dp$. 考虑用$f[S][i]$表示集合$S$已经被考虑过了,独立集大小为$i$的方案数. 显然,这个集合$S$的最外层显然都没有被选. 考虑如何转移. 枚举一个$j\notin S$,那么独立集大小显然$+1$,然后所有和$j$相连的点都不 阅读全文
posted @ 2018-12-03 15:58 Romeolong 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 终于对仙人掌有了一点初步的理解. 仙人掌 仙人掌是什么? 仙人掌是一个无向图. 仙人掌有什么特点? 仙人掌的每条边只属于一个简单环. 下面是一个栗子 有什么用呢? 我们可以先用$tarjan$找出环,然后处理. 下面是一道 "例题" ,$BZOJ4316$ 显然,在环内$dp$,把答案并到根(环中$ 阅读全文
posted @ 2018-12-03 11:19 Romeolong 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 题目 "链接" 还是圆方树. 考虑如果可以走到一个连通分量,一定可以走到这个连通分量的最小值. 那么维护搜索栈,找点双. ~~这一部分自行学习~~. 假设已经建出了圆方树,然后$dfs$一遍. 圆点直接维护权值,方点用一个$multiset$维护它的所有儿子的权值. 然后树剖+线段树维护区间最小值即 阅读全文
posted @ 2018-12-03 11:18 Romeolong 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题目 "链接" 先构造圆方树,然后圆 圆边的距离就是直接距离,圆 方边的距离就是圆点到环的起始点的距离. 然后在圆方树上倍增就好了. 注意如果$LCA$是方点就往下跳到圆点,然后做一个环上最短路即可. 代码如下 cpp include include include include include 阅读全文
posted @ 2018-12-03 11:17 Romeolong 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 题目 "链接" 考虑用$tarjan$找环,环内$dp$,环外$dp$. 用$f[u]$表示到$u$点的最长距离长度. 如果我们找到一条边是桥就直接转移——$f[u]=max(f[u],f[v]+len)$,同时更新$Ans$. 我们其实要求的就是$max(f[i]+f[j]+dis(i,j))$ 阅读全文
posted @ 2018-12-03 11:00 Romeolong 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题目 "链接" 一句话题意 求仙人掌上最大独立集 解析 考虑先用$tarjan$找出环,然后环内外分别处理. 其实是用$dfs$序的性质做题. 令$f[u][0]$表示不选$u$的最大独立集,$f[u][1]$表示选$u$的最大独立集,那么答案是$max(f[1][0],f[1][1])$ 如果我们 阅读全文
posted @ 2018-12-03 10:43 Romeolong 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 先放个 "传送门" 后缀数组模板题 如果$p,q$是$r$相似的,相当于$p,q$有一个长度为$r$的$lcp$ 考虑把$SA$和$Height$建出来之后,让$Height$从大到小排序.然后从大到小做(因为两杯$r$相似的酒肯定是$0,1,2...r$相似的).用并查集维护每个连通块的$size 阅读全文
posted @ 2018-12-03 09:36 Romeolong 阅读(101) 评论(0) 推荐(0) 编辑