![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
圆方树&仙人掌
文章平均质量分 70
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
圆方树简介(UOJ30:CF Round #278 Tourists)
我写这篇博客的原因 证明我也是学过圆方树的 顺便存存代码 前置技能 双联通分量:点双 然后就没辣 圆方树 建立 新建一个图 定义原图中的所有点为圆点 对于每个点双联通分量(只有两个点的也算) 建立一个方点,向所有的点双内的点连边 性质 一定是个森林 每个点双有唯一的方点 圆点方点相间分布,相同点不相邻 等等 例子 1 题面 求可以出...原创 2018-02-25 10:49:14 · 1863 阅读 · 0 评论 -
[APIO2018] Duathlon 铁人两项
题面 LOJLOJLOJ自己找。。 Sol 建立圆方树 考虑枚举起点sss和终点ttt 那么答案就是sss到ttt间的点双的点数和减去s,ts,ts,t 设方点权值为点双的点数,圆点的权值为−1−1-1 那么就是求s,ts,ts,t的路径上的点权和 现在考虑中间的点xxx 那么它的贡献就是经过它的路径的条数*它的权值 树DPDPDP得解 # include <bit...原创 2018-05-31 12:13:31 · 834 阅读 · 0 评论 -
Bzoj4784: [Zjoi2017]仙人掌
题面 传送门 Sol 首先判断是能成为仙人掌 然后考虑DPDPDP 因为所有的环内不可能连边,那么直接删掉 变成一个森林 对每个树求出方案然后相乘就是答案 一个巧妙的转化:看成选取若干条路径恰好覆盖所有的树边的方案数 设g[i]g[i]g[i]表示iii个点两两配对的方案数 g[i]=g[i−1]+g[i−2]∗(i−1)g[i]=g[i−1]+g[i−2]∗(i−1)g[i]...原创 2018-05-31 12:23:28 · 230 阅读 · 0 评论 -
仙人掌基础
定义 大概就是:连通图,每条边最多只属于一个环 用处 解别人出的毒瘤题 出毒瘤题 反正要学。。。 习题 仙人掌的最大独立集 Bzoj4316: 小C的独立集 做法 没有环就是树DPDPDP 碰到环就做一遍环上的DPDPDP就好了,枚举一下一个点是否选即可 # include &amp;lt;bits/stdc++.h&amp;gt; # define IL inline # d...原创 2018-05-31 12:07:35 · 1549 阅读 · 1 评论 -
CodeChef SADPAIRS:Chef and Sad Pairs
vjudge 首先显然要建立圆方树 对于每一种点建立虚树,考虑这一种点贡献,对于虚树上已经有的点就直接算 否则对虚树上的一条边 (u,v)(u, v)(u,v),uuu 为父亲,假设上面连通块大小为 xxx,下面为 yyy 切断 (u,v)(u, v)(u,v) 之间的点(不包括 uuu)都会有 x×yx\times yx×y 的贡献,差分一下贡献即可 # include <bits/std...原创 2019-01-16 14:51:38 · 510 阅读 · 0 评论