![](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 · 1866 阅读 · 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 · 835 阅读 · 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 · 1550 阅读 · 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 · 511 阅读 · 0 评论