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 · 563 阅读 · 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 · 563 阅读 · 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 · 521 阅读 · 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 · 642 阅读 · 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 · 614 阅读 · 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 · 731 阅读 · 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 · 939 阅读 · 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 · 672 阅读 · 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 · 581 阅读 · 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 · 589 阅读 · 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 · 715 阅读 · 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 · 617 阅读 · 0 评论 -
codeforces 337D Book of Evil
官方题解337D - Book of EvilObviously, 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 · 761 阅读 · 0 评论