摘要: "题意" 建出最短路图(DAG)之后就跟这题 "一样" 了。 code: 阅读全文
posted @ 2019-12-03 21:29 nofind 阅读(198) 评论(0) 推荐(0) 编辑
摘要: "题意" 这题思路好奇怪啊 见到有向无环图显然是要拓朴排序,不妨按照被吃向吃连边,那么$x$灭绝当且仅当x的入点都灭绝,于是考虑怎样x的入点都灭绝 比如4号节点,它灭绝当且仅当2和3灭绝,2和3灭绝当且仅当1灭绝,我们发现1是2和3的lca 于是得出这样一个做法:将每个点$x$和灭绝后能灭绝$x$的 阅读全文
posted @ 2019-12-03 16:01 nofind 阅读(102) 评论(0) 推荐(0) 编辑
摘要: "题意" 建出虚树DP。 设$f[i]$表示i的子树的第一问答案,$minn[i]$表示$i$的子树中到$i$最近的关键点,$maxx[i]$表示$i$的子树中到i距离最远的关键点,$size[i]$表示$i$子树中的关键点个数。 $f[x]=\sum\limits_{y\in\ son_x}f[y 阅读全文
posted @ 2019-12-03 15:45 nofind 阅读(86) 评论(0) 推荐(0) 编辑
摘要: "题意" 看见数据范围就知道是虚树,于是先建出虚树。 考虑先求出虚树上的点的管理点,显然两边dfs,一遍从下往上,一遍从上往下。 之后考虑不在虚树上的点,对于虚树上的每一条边$(u,v)$,我们考虑上面未出现在虚树上的点的个数是多少,显然是$u$包含$v$的儿子$x$的子树的大小减去$v$子树的大小 阅读全文
posted @ 2019-12-03 12:43 nofind 阅读(100) 评论(0) 推荐(0) 编辑
摘要: "题意" 首先先把虚树建出来。 设$f[i]$表示将$i$的子树割断的最小代价,$minn[i]$表示从$1$到$i$的路径上最小的边,那么有: $f[x]=minn[x]$ 如果x不是资源点: $f[x]=min(f[x],\sum\limits_{y\in\ somn_x}f[y]$ code: 阅读全文
posted @ 2019-12-02 20:25 nofind 阅读(98) 评论(0) 推荐(0) 编辑
摘要: "题意" 显然是虚树。 建出虚树后就可以跑DP了。 设$f[x]$表示$x$的子树内需要选几个点。 如果一个点$x$的子树中有选中点(注意不是关键点,因为关键点中有lca)就标记为1。 之后对当前点分类讨论: 1.当前点是选中点:显然儿子中子树内有选中点的都要删去 2.当前点不是选中点:如果儿子中子 阅读全文
posted @ 2019-12-02 11:34 nofind 阅读(128) 评论(0) 推荐(0) 编辑
摘要: "题意" 求:$\sum\limits_{i=1}^n\sum\limits_{j=1}^n\max(i,j) f(ij)$,$f(ij)$表示$ij$的约数和。 先把$max$去掉: $2 \sum\limits_{i=1}^{n}\sum\limits_{j=1}^ii f(ij) \sum\l 阅读全文
posted @ 2019-12-02 10:13 nofind 阅读(135) 评论(0) 推荐(0) 编辑
摘要: "题意" splay维护即可 code: 阅读全文
posted @ 2019-11-30 17:18 nofind 阅读(143) 评论(0) 推荐(0) 编辑
摘要: "目录" 1.区间加+单点查 每个块维护tag,散的暴力改。 code: 阅读全文
posted @ 2019-11-30 09:00 nofind 阅读(483) 评论(0) 推荐(0) 编辑
摘要: "题意" 斯坦纳树裸题。 显然答案是棵树。 设$f[i][s]$表示以$i$为根,集合为$s$的最小代价。 先在同根之间转移: $f[i][s]=min(f[i][t]+f[i][s\ xor\ t] val[i])$ 减$val[i]$是因为算了两遍。 之后扩展新点: $f[i][s]=min(f 阅读全文
posted @ 2019-11-29 16:29 nofind 阅读(67) 评论(0) 推荐(0) 编辑