
树形DP
文章平均质量分 51
空灰冰魂
=NULL
展开
-
【POJ1947】Rebuilding Roads,树形DP(本文分组背包做法)
左儿子右兄弟的树形DP?我靠,多大的代码复杂度啊?快来写一发分组背包版树形DP!!!【POJ1947】将你导入这个即将被背包占领的世界!原创 2014-09-25 09:50:31 · 2029 阅读 · 1 评论 -
【East!模拟赛】【Round1】【BZOJ1017】魔兽地图Dotr 树形DP
题意不多说。曰: 呃,首先显然这是一个树形DP。 然后我不会什么高大上的算法,我只能提供一种非常慢,但是能在BZ切的算法(因为是总时限并且还有O2)。题解: 不需要新建树,这个树就行。 首先这道题一眼就能想到树形背包。。但是树形背包怎么做呢? 因为需要合成,所以这里的状态F[i][j][k]并不是i节点有j个花费为k时的最大收益,而是i节点原创 2014-11-22 09:54:08 · 1755 阅读 · 0 评论 -
【East!模拟赛】【Round1】【codeforces455B】题解。
A:codeforces Round#260 div1 B [a lot of games].题解:俩人玩游戏,有若干个字符串,每一轮都是俩人轮流念一个字母,使得当前的这些字母是其中一个字符串或者其前缀,即在字典树上走,每人走一步,走不了的人输,然后有m轮,每轮输的下一轮先手,问最后一轮谁赢?题解: 显然这是一道博弈题,但是如果我们单纯地计算每一局是先手赢还是后手赢,那就要跪了。原创 2014-11-22 09:17:10 · 1434 阅读 · 0 评论 -
【BZOJ3238】【Ahoi2013】差异 后缀自动机
首先 秦神QY Orz 题解:这道题后缀数组过于鬼畜(wo’tai’ruo’bu’gan’xie)所以写了简单好写易于理解不用分治不用RMQ的SAM大叔。题解:首先其实我们需要一个后缀树,然后两个后缀的lcp就是它们lca的len。后缀树可以通过反序后缀自动机得到,这个很水。然后len的性质就是后缀自动机的那个len(我写的‘deep’)。后缀树上DP就水了原创 2015-01-14 23:35:46 · 2232 阅读 · 0 评论 -
【BZOJ2427】【HAOI2010】软件安装 tarjan+树形背包DP
题解:首先它可能有环。所以先tarjan缩点。 然后跑树形背包。代码:#include #include #include #include #define N 120#define M 600using namespace std;struct Eli{ int v,next;}e[M];int head[N],cnt;inline void ad原创 2015-03-26 20:23:49 · 1707 阅读 · 0 评论 -
【BZOJ2435】【Noi2011】道路修建 树形DP
题解:树形DP记录size。然后每个子树回来是边的两边数量是size子节点size_{子节点}和n−size子节点n-size_{子节点}代码:#include #include #include #include #define N 1001000#define inf 0x3f3f3f3fusing namespace std;struct Eli{ i原创 2015-03-26 20:43:29 · 2028 阅读 · 0 评论 -
【BZOJ3566】【SHOI2014】概率充电器 树形DP 概率DP
题解:首先无根树转化为有根树。 fi:f_i: 表示 ii 节点由其子树内节点充【不上】电的概率。 gi:g_i: 表示 ii 节点由其父亲节点充【不上】电的概率。 hi:h_i: hi=fi+(1−fi)∗(1−其父到其的导线的充电概率)h_i=f_i+(1-f_i)*(1-其父到其的导线的充电概率) 表示对父亲 fif_i 的贡献。先dfs一遍, fi=(1−自己直接来电的概率原创 2015-06-11 17:53:25 · 2292 阅读 · 0 评论 -
【BZOJ3572】【Hnoi2014】世界树 虚树
题解:首先构建虚树,然后在虚树上DP。 过程很简单。 先找出每个虚树节点 ii 旁边最近的询问节点 nearinear_i (因为有一些lca也被加入了虚树所以虚树节点不全是询问节点,呃怕你们不懂,但其实这是废话Qwq。) 然后对于每条链 [l,r][l,r],找出 [nearl,nearr][near_l,near_r] 中点,然后两边随便给一给就好了。。代码:#inclu原创 2015-06-15 19:18:21 · 2449 阅读 · 0 评论