没测样例一遍A这真是……
题意:每个点都有且仅有一个出边(可以出现自环),然后这样一个点出发就会走过且一定走过某些点。
问每个点出发都会走过几个点。
首先这是基环树无疑。
然后就是裸DP了。
这个的关键就是找环,仅此。
#include
#include
#include
#include
#define N 101000
using namespace...
分类:
其他好文 时间:
2015-01-03 09:24:21
阅读次数:
138
【BZOJ 2878】 [Noi2012]迷失游乐园
树dp+基环树~有详细讲解~...
分类:
其他好文 时间:
2014-12-23 15:37:25
阅读次数:
193
题目大意:给定一个图,图的中心是一个n个点的多边形,每条边都外接一个五边形,求生成树个数
Matrix Tree定理?不会!
观察这个图
5n条边 4n个点
每个五边形都是一个环 必须拆掉一条边
拆掉之后发现4n个点 4n条边 是一个基环树
基环树的环上的边由中心多边形被拆掉的边所在的五边形的剩余边与中心多边形未被拆掉的边构成
容易发现这个环上任意拆掉一条边都会导致某个五边形被拆...
分类:
其他好文 时间:
2014-11-21 14:23:08
阅读次数:
229
题目大意:给定n个形如xi=ki*x_pi+bi mod p的同余方程组 支持修改操作和求解操作
确实好题 感谢此题作者 顺便吐槽一下作者的Splay不加空节点太蛋疼了0.0
将每个点i的父亲设为pi 我们将会得到一座基环树林 将环上的一条边拆掉,在边的起始节点新开个域special_father记录这条边(P.S:好浪费 但是没办法)
于是我们得到了一座森林 显然可以用LCT来维护 每个节...
分类:
其他好文 时间:
2014-10-25 09:20:13
阅读次数:
284
题意:基环树最大独立集
思路:
像这种题就是朴素的树形dp非常容易的,我们用一些技巧转化为变体树。
直接套用仙人掌的动态规划做法:(基环树事实上也属于一种仙人掌)
首先利用tarjan算法,如果遇到自己与儿子之间的边为割边则按照树边处理。
Tarjan后看一下与自己相连的边,如果某个相邻点不是自己的儿子,并且入栈序比自己大,那么说明自己是环上的的最高点,此时我们对环上特别的进行d...
分类:
其他好文 时间:
2014-10-17 11:57:30
阅读次数:
371
题目大意:有一些骑士,他们每个人都有一个权值。但是由于一些问题,每一个骑士都特别讨厌另一个骑士。所以不能把他们安排在一起。求这些骑士所组成的编队的最大权值和是多少。
思路:首先貌似是有向图的样子,但是一个人讨厌另一个人,他们两个就不能在一起,所以边可以看成是无向的。
n个点,n条无向边,好像是一颗基环树。但其实这是一个基环树林,因为题中并没有说保证图一定联通。
然后就可以深搜了,处理...
分类:
其他好文 时间:
2014-10-08 17:19:05
阅读次数:
265
题目大意:给定一个基环树林,每个点上有权值,要求选择一个权值和最大的点集,要求点集中的任意两个点之间不能直接相连
最大点独立集……考虑到n
对于每棵基环树,我们找到环上的一条边,设边上的两端点分别为u和v,f[i]为以i为根的子树在取i点的情况下的最大权值,g[i]为不取,于是我们有以下做法:
1.断掉这条边
2.u不取,v任意,我们以u为根跑一遍树形DP,取g[u]
3.v不取,u任意...
分类:
其他好文 时间:
2014-10-03 10:31:14
阅读次数:
192
#include#include#include#includeusing namespace std;#define N 220000#define inf 0x3ffffffffffffffLLtypedef long long ll;int v[N],e[N],ne[N],nn,w[N];vo...
分类:
其他好文 时间:
2014-06-25 11:04:35
阅读次数:
268