链接
题解转自:
题意:
给定n k
下面n-1行给出一棵树。
把数字1-n填到树的节点上。
填完后计算leader节点个数,若这个点是leader,则这个点上填的数>这个点的子树上填的数
问:恰好有k个leader节点的 填涂方案数.
思路:
dp[i][j]表示以i点为根的子树 有恰好j个leader的方案数。
如果u 是叶子节点则 dp[u][0] = 0, dp...
分类:
其他好文 时间:
2015-08-12 16:54:16
阅读次数:
133
很显然是树形背包,注意m为0的情况。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N = 101; 7 int head[N]; 8 int bn[N]; 9 int value[N];10 in...
分类:
其他好文 时间:
2015-08-11 11:55:39
阅读次数:
79
这道题可以和POJ 2486 树形背包DP Apple Tree比较着来做。参考题解 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int maxn = 50...
分类:
其他好文 时间:
2015-08-04 10:56:27
阅读次数:
169
题意:n个房间,每个有一定的钱,一个房间到另一个房间花费一定的时间,给你房间连接树,求在t时间内到达房间m能得到的最大钱数(从房间1(根)出发)分析:该题关键是最后要到达m,没有这个条件,就是基础的树形背包,哎,一开始没思路,放了一段时间,看看题解才明白,该题突破口,就是,你先想怎么判断不能到到达m...
分类:
其他好文 时间:
2015-08-03 12:50:01
阅读次数:
105
题意:n个洞组成一棵树,有m个士兵,从1号洞开始攻打,每个洞有a个bug和b的价值。一个士兵可以打20个bug,为了拿到这个洞的价值b必须留下k个士兵消灭这个洞的所有bug(k*20>=bug的数量,且留下的士兵不可以再去攻打其他的洞,且必须攻打了前面的洞才可以攻打后面的洞)。问花费这m个士兵可以得到的最大价值是多少。
dp方程:dp[i][j]=max(dp[i][j],dp[i][j-k]...
分类:
其他好文 时间:
2015-06-07 09:35:45
阅读次数:
241
给定n,m表示n个城堡,我们可以选择攻占m个城堡。要使得价值最大接下来n行 a b, 第i行的a b,表示攻占第i个城堡的价值为b,但需要先攻占第a个城堡如果有多个a=0的点,那么就不是一棵树,但是我们可以建立一个根结点0,让根结点指向那些a=0的点, 同时m++,因为更结点必须被占据,占据一个结....
分类:
其他好文 时间:
2015-04-18 19:12:18
阅读次数:
146
hdu1011http://acm.hdu.edu.cn/showproblem.php?pid=1011给定n个洞穴和m个士兵(每个士兵能消灭20个bugs)然后给定每个洞穴的bugs数量(背包的费用)和brain的数量(背包的价值)然后给定n-1条边,使得n个洞穴形成一课树问能取得的brain数...
分类:
其他好文 时间:
2015-04-18 15:57:29
阅读次数:
110
/*
这道题还不错,自己想出了思路过得也比较快,也得出了一个小经验,以后写这种题先把关键部分伪代码写出来这样会快很多而且
不那么容易出错,省去很多的调试时间
这道题就是转化为一道树形背包问题。首先把需要付的钱转为负数,对每个叶子结点增加一个子节点表示赚的钱,为正数.
然后记录下当前结点的所有可能的用户数目所花费的钱.所以问题就转化为一道简单的树形dp问题。最...
分类:
其他好文 时间:
2015-04-06 08:50:07
阅读次数:
164
题目链接:点击打开链接
题意:
给定n个点的有根树(0为根),
下面给出边和边权
一个整数q表示q个询问
每个询问一个数字x ,表示有一个人从根开始走,行走距离不超过x且使得走过不相同的点最多。
问最多能走多少个点。
思路:
dp[i][j][0]表示以i为根的子树,以i为起点走了j个不同点且回到i的最小花费。
dp[i][j][1]表示不需要回到i的最小花费。
转移的时候就是...
分类:
其他好文 时间:
2015-02-02 19:56:18
阅读次数:
239
题意不多说。
曰:
呃,首先显然这是一个树形DP。
然后我不会什么高大上的算法,我只能提供一种非常慢,但是能在BZ切的算法(因为是总时限并且还有O2)。
题解:
不需要新建树,这个树就行。
首先这道题一眼就能想到树形背包。。但是树形背包怎么做呢?
因为需要合成,所以这里的状态F[i][j][k]并不是i节点有j个花费为k时的最大收益,而是i节点...
分类:
其他好文 时间:
2014-11-22 12:08:48
阅读次数:
215