给定n个点(1~n)使他们构成二叉树 求高度大于h 的有多少种#include using namespace std;long long int tbl[36][36];long long int get(int n, int h) { long long int &ans = tbl[n]...
分类:
其他好文 时间:
2014-08-26 13:09:56
阅读次数:
154
题目大意为,求一个树的直径(最长路),以及直径的数量朴素的dp只能找出某点开始的最长路径,但这个最长路径却不一定是树的直径,本弱先开始就想简单了,一直wa直到我看了某位大牛的题解。。。按照那位大牛的思路,我们来考虑直径的构成:情况1:由某叶子节点出发产生的最长路径直接构成情况2:由某有多个儿子的节点...
分类:
其他好文 时间:
2014-08-26 00:29:05
阅读次数:
313
hdu1011 和 hdu1561类似,给定每个节点的花费以及价值,并且子节点必须在父亲节点取到以后才可以被取到相当于是在树上进行的01背包dp时考虑每一个子树 root和它的每一个儿子,状态转移方程为dp[root][j]=max(dp[root][j],dp[root][j-k]+dp[ son...
分类:
其他好文 时间:
2014-08-26 00:16:55
阅读次数:
236
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3805
Machine
Time Limit: 2 Seconds Memory Limit: 65536 KB
In a typical assembly line, machines are connected one b...
分类:
其他好文 时间:
2014-08-25 21:17:04
阅读次数:
296
咋一看确实想到的是树形DP,但是我一开始也马上想到环的情况,这样应该是不可以进行树形DP的,然后我自以为是地想用有向图代替无向图,而且总是从能量高的指向能量低的,这样自以为消除了环,但是其实是不对滴,这样的话在树形DP的过程中就会出问题。然后实在没想到好的方法,去看 了下这题的discuss,结果大...
分类:
其他好文 时间:
2014-08-25 11:28:54
阅读次数:
216
题意如标题所述,
先无向图缩点,统计出每个bcc权,建新图,然后一遍dfs生成树,标记出每个点(新图)以及其子孙的权值之和。这样之后就可以dfs2来枚举边(原图的桥),更新最小即可。
调试了半天!原来是建老图时候链式前向星和新图的vector>俩种存图搞乱了!!!不可原谅!哎!愚蠢!愚不可及!提交后1A。
后来百度之后,发现说是用树形dp,看了代码解法,竟然和我...
分类:
其他好文 时间:
2014-08-19 20:56:05
阅读次数:
248
看题目请戳我
#include
#include
#include
#include
using namespace std;
#define maxx 10050
int num[maxx];//记录孩子的个数
int dp[maxx];//记录把这个节点删除之后剩下的最大的连通度
int sum;
vector root[maxx];
bool vis[maxx];
int df...
分类:
其他好文 时间:
2014-08-19 16:34:05
阅读次数:
223
题目大意:
给出一棵树,求出从起点开始走m长度最后回到起点,所能得到的宝藏的最大价值。
思路分析:
通过一次dfs可以得到的是子树到根节点的所有距离的最大值。
现在的问题就是他走完一颗子树可以去另外一颗子树。
所以在回溯到根的时候要统计其他子树上互补距离的最大值。
dp[i] [j] 表示i为根节点,在i的子树中走j步然后回到i所能拿到的最大价值。
转移方程就是
d...
分类:
其他好文 时间:
2014-08-19 10:59:44
阅读次数:
250
题目大意:
求出树上距离为k的点对有多少个。
思路分析:
dp[i][j] 表示 i 的子树中和 i 的距离为 j 的点数有多少个。注意dp[i] [0] 永远是1的。
然后在处理完一颗子树后,就把自身的dp 更新。
更新之前更新答案。
如果这颗子树到 i 有 x 个距离为j的。那么答案就要加上 dp[i] [ k-j-1] * x;
#include
#inclu...
分类:
其他好文 时间:
2014-08-18 20:32:02
阅读次数:
176
题目大意:
求出每一个结点距离叶子节点的最大距离。
思路分析:
假设1为树的根。
通过一遍dfs 可以求出每个节点到儿子节点上的叶子节点的最远距离。
然后我们要做的就是如果更新答案。
问题就是如果我们开始求的最大值本来就是一个儿子更新的,如果再深搜的话又会造成重复更新。
所以就记录两个值,最大值和次大值。
然后不断更新这两个值。
#include
#includ...
分类:
其他好文 时间:
2014-08-18 18:44:32
阅读次数:
225