
树形DP
文章平均质量分 77
大蒟蒻syk
这个作者很懒,什么都没留下…
展开
-
[BZOJ3572][Hnoi2014]世界树 && 虚树+DP
这玩意好难啊Orz完全不理解那个模拟深搜到底是什么鬼果然像我这样的人最好早点滚粗 要简历虚树 首先要选出虚树里面的点 那么关键点和关键点的LCA都要加入到虚树中来 那我们就深搜一遍 处理出每个节点的dfn值和儿子数 按照dfn值依次枚举每一个关键节点 这样可以把同一棵子树内的节点一起找到用一个深度单调的栈来维护树中的节点 每次取出一个关键点 求出它和栈顶元素的lca 如原创 2015-04-09 13:43:33 · 1475 阅读 · 0 评论 -
[BZOJ1023] [SHOI2008]cactus仙人掌图 && 仙人掌DP+单调队列
#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 50000;vector G[MAXN+10];int low[MAXN+10], dfn[MAXN+10], f原创 2015-03-22 11:51:05 · 429 阅读 · 0 评论 -
[CF538E]Demiurges Play Again && 树形DP
计算进入该子树能取到的最大的叶子是第几大和最小的叶子是第几大就行了#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 200000;struct Node { in原创 2015-04-27 22:14:37 · 843 阅读 · 0 评论 -
[BZOJ2878][Noi2012]迷失游乐园 && 树形DP
因为该图要么是一棵书 要么是一个环 所以我们分开处理 从较为简单的树入手part1:题目转化为 求一棵树上从任何一个节点出发的最长路径的期望值 显然我们可以发现全局期望值等于每个点的期望值d[i]的和除以点的数量 所以我们需要处理出每个点出发的最长路径的期望值 对于任何一个点来说 他有两种行走的方向 一种是向父亲行走 一种是向儿子行走 我们假设d[i] 表示i原创 2015-03-27 22:53:09 · 1319 阅读 · 3 评论 -
[BZOJ3242][Noi2013]快餐店 && 环套树+线段树
如果给的是一棵树那么答案显然是直径/2但是现在给的是一个环套树 那你就枚举一下环上的每条边把它删掉再求直径就好辣(显然你不会走环上的某一条边 这很显然吧- - )然后你就要求剩下来的这棵树的直径 然后n^2会爆炸 怎么办捏我们维护以环上节点为根的树的最长链s环上两点距离可以用前缀和处理(先假设枚举的第一条边是环上第一个点和最后一个点的边 这样就可以用前缀和表示了)则直径为max原创 2015-06-05 10:52:07 · 1864 阅读 · 0 评论