![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Tree dp
文章平均质量分 75
角落里的阳光Lee
这个作者很懒,什么都没留下…
展开
-
hdu 1011 Starship Troopers
需要注意的是 m==0时 特判输出0; 总的来说。。简单的树形dp #include #include #include #include #include #include #include using namespace std; const int maxn = 101; const int inf = 0x3f3f3f3f; int dp[maxn][maxn]原创 2013-07-24 14:00:15 · 553 阅读 · 0 评论 -
hdu 4679 Terrorist’s destroy 多校第八场
先从根深搜一遍,所有子节点的最长,次长,次次长链 l1,l2,l3 分别 最长,次长,次次长链的大小,s1,s2,s3 表示来自哪个子节点 然后再从根dfs一遍,每次将父节点的最长链来更新子节点的链 不能直视的搓代码。。。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #inclu原创 2013-08-16 16:35:34 · 547 阅读 · 0 评论 -
UVALive 2038 Strategic game
一棵树,n个节点,最少需要在节点上放几个士兵,能够观察到所有的边(即一条边上至少一个点选中) dp[ u ][ j ] 表示节点u,状态为j时的把以u为根节点的子树的边全部观察的最小值,j==0表示u节点不放兵,1表示放兵,那么dp[ i ][ 0 ] = sigma(dp[ v ][ 1 ]),d[ u ][ 1 ] = sigma(min(dp[ v ][ 0 ],dp[ v ][ 1原创 2013-08-11 19:22:15 · 508 阅读 · 0 评论 -
hdu 4705 Y 多校第十场
题目求的是非simple path 的个数,那么倒过来想,总数-simple path 数 = 我们所求的。 总数为C(n,3); simple path 数,枚举每个点作为根时,每个子树的结点通过根的 都是 simple path,求和一下即可。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #原创 2013-08-22 19:11:34 · 622 阅读 · 0 评论 -
uva 10859 Placing Lampposts 树形dp
#include #include #include #include #include #include #include #include using namespace std; #define clr(a, x) memset(a, x, sizeof(a)) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #def原创 2013-08-02 16:41:17 · 592 阅读 · 0 评论 -
poj 1741 Tree 点分治
题目大意: 给定一棵N个节点、边上带权的树,再给出一个K,询问有多少个数对(i,j)满足i 数据规模: 多组测试数据,N≤10000,1≤边权≤1000,1≤K≤10^9。 马克:楼天城男人必做8题之一.... 目前只做了这一题 http://wenku.baidu.com/view/60c6aa1ffc4ffe473368aba8.html 上面网址是讲解思路的论文,具体实现没说原创 2013-07-24 08:58:27 · 717 阅读 · 0 评论 -
hdu 4616 Game 多校第二场
树形dp 细节比较多,看了别人博客才会写。。。 #include #include #include #include #include #include using namespace std; typedef __int64 lld; const int MAXN = 50050; const int inf= 0x7f7f7f7f; int dp[MAXN][4][2];/原创 2013-07-27 16:08:56 · 920 阅读 · 1 评论 -
POJ 2486 Apple Tree
树形dp。。 dp[1][n][k] 表示走了k步在n号结点获得的最大值。 其中第一维 0表示返回本身,1表示不返回。 #include #include #include #include #include #include #include #include #include #include #include using namespace std;原创 2013-07-24 14:39:35 · 658 阅读 · 0 评论 -
HDU 1561 The more, The Better
水题。。。 dp[u][k] 表示 攻克第u个城堡,已攻克k个城堡获得的最大值 #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long l原创 2013-07-24 14:15:39 · 568 阅读 · 0 评论 -
poj 1155 TELE
树形dp简单题,dp[u][k] 表示u节点,k个观众 最大的价值 #include #include #include #include #include #include #include using namespace std; const int maxn = 3010; const int inf = 0x3f3f3f3f; int dp[maxn][maxn];原创 2013-07-24 13:53:55 · 577 阅读 · 0 评论 -
poj 2114 Boatherds 点分治
这道题和poj 1741 非常像 唯一去区别就是要求满足点对权值变为==k; 所以直接修改了1741的calc函数 AC。#include #include #include #include #include #include #include #include using namespace std; const int MAXN = 10100; const int i原创 2013-07-24 10:01:57 · 699 阅读 · 0 评论 -
HDU 4276 The Ghost Blows Light
#include #include #include #include #include #include #include using namespace std; const int MAXN = 110; int dp[MAXN][5*MAXN]; vectorvv[MAXN]; int flag[MAXN]; int ts[MAXN]; int pre[MAXN]; int原创 2013-07-20 12:56:24 · 600 阅读 · 0 评论 -
codeforces 337D Book of Evil
官方题解 337D - Book of Evil Obviously, in graph theory language our problem is: given a tree with n vertices, m of which are marked, find the number of vertices which are at most distance d a原创 2013-08-18 15:11:07 · 749 阅读 · 0 评论