树形DP
morejarphone
这个作者很懒,什么都没留下…
展开
-
HDU5416(树DP)
比较水,坑点是答案要爆int。#include #include #include #include #include #include using namespace std;#define maxn 511111#define maxm 1111111#define INF 111111111struct node { int from, to, next,原创 2015-10-06 17:20:29 · 381 阅读 · 0 评论 -
HDU 5723 (最小生成树 树DP)
题目链接:点击这里题意:求一个图的最小生成树, 并且在这个最小生成树的基础上, 求随机取两个点不同的点的路径长度的期望。最小生成树直接可以求出来,然后枚举每一条边对期望的贡献即可。#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <cmath>using namespace原创 2016-07-20 21:57:32 · 401 阅读 · 0 评论 -
HDU 5739 (点双连通 树DP)
题目链接:点击这里题意:定义连通分量的值是点权的积,图的值是所有联通分量值的和。求∑i∗(去掉i节点子图的值)\sum i*(去掉i节点子图的值)。i不是割点容易求。如果是割点删掉就会形成很多新的联通分量,先把所有的点双连通分量求出来缩成一个新点,新点对联通分量里每个点都连边构造一个树,通过一次树dp求出每个点为根的子树的乘积以及每个点所有孩子子树的和。trick:注意孤立点,新图的点数最多大概是原原创 2016-07-24 21:41:57 · 607 阅读 · 0 评论 -
HDU 3094 (博弈 树DP)
A tree gameTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 624 Accepted Submission(s): 335Problem DescriptionAlice and Bob wa原创 2016-03-28 23:16:04 · 476 阅读 · 0 评论 -
Codeforces 622E (树DP)
E. Ants in Leavestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputTree is a connected graph without cycles.原创 2016-03-26 01:37:20 · 377 阅读 · 0 评论 -
HDU 5593 (树DP)
ZYB's TreeTime Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 126 Accepted Submission(s): 39Problem DescriptionZYB has a tree原创 2015-12-05 23:29:14 · 371 阅读 · 0 评论 -
Gym 100499E (树DP)
E. Binary Search Treetime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputA binary tree is a tree data structur原创 2015-12-03 22:27:01 · 416 阅读 · 0 评论 -
codeforces 592D(树DP)
题意是要经过一棵树上的一些点(把这些点叫m点吧),可以从任意的点出发,问最少走几次边。可以预先删除无关的节点,比如从节点1开始dfs,当某个节点为根子树中不含有m点的情况下可以删除这棵子树。然后就得到了一棵新的树,这棵树每一个叶子节点必然是m点,但是原本设定的根节点1应该有所改变。然后以一种巨搓无比的姿势水过,各种树DP瞎搞。最优的情况显然是走最大直径,最大直径外的边每条走两次。至原创 2015-11-02 22:48:36 · 551 阅读 · 0 评论 -
HDU4607(最大直径 树DP)
题意是给一棵树,从一个点出发走k个点,问最少走几次边。通过一次树DP求出最大直径,如果最大直径能包含k个点就走最大直径,否则每增加一个点就需要多走一条边两次,那么答案就不难想了。#include using namespace std;#define maxn 511111#define maxm 1111111int dp[maxn][2]; //从i出发到叶子节点的最长长度原创 2015-10-27 22:28:56 · 343 阅读 · 0 评论 -
HDU5242(树DP)
题意是取k个点,每次累加从根到这个点的权值的和,最多只能加一次,问最大能得到多少。用sum[i]表示i到叶子节点的最大的路径上的和,son[i]表示和最大的路径上的i的孩子,father[i]表示和最大的路径上的i的父亲。#include #include #include #include #include using namespace std;#define maxn 1原创 2015-10-10 21:23:38 · 287 阅读 · 0 评论 -
codeforces 734E (树的最大直径)
题目链接:点击这里题意:给出一个树,每个节点有一种颜色.每次能够选中一个节点,其他的点如果到它的路径上都是这种颜色那么可以一起改变颜色.问最少需要改变几次颜色.先按照颜色缩点, 然后答案就是缩点之后树的最大直径, 直接DP即可.#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cma原创 2016-11-17 09:33:39 · 648 阅读 · 0 评论