E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
dp--树形dp
poj 3107 Godfather(
树形dp
)
本文出自 http://blog.csdn.net/shuangde800 -------------------------------------------------------------------------------------- 题目链接: poj-3107 &
·
2015-11-13 02:39
poj
poj 3107 Godfather
id=3107
树形dp
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm
·
2015-11-13 01:13
poj
BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会
树形DP
[Usaco2010 Mar]gather 奶牛大集会 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。每个奶牛居住在 N(1<=N<=100,000) 个农场中的一个,这些农场由N-1条道路连接,并且从任意一个农场都能够到达另外一个农场。道路i连接农场A_i和B_i(1 <= A_i <=N; 1
·
2015-11-13 00:15
USACO
hdu 4714
树形DP
思路:dp[i][0]表示第i个节点为根的子树变成以i为一头的长链最小的花费,dp[i][0]表示表示第i个节点为根的子树变成i不是头的长链最小花费。 那么动态方程也就不难想了,就是要分几个情况处理,细心就好。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include<iostream>
·
2015-11-13 00:12
HDU
poj 3689
树形dp
思路: 每个点有三种状态,本身有塔,被子节点的塔覆盖,被父节点的塔覆盖。 #include<map> #include<set> #include<cmath> #include<queue> #include<cstdio> #include<vector> #include<string> #
·
2015-11-13 00:11
poj
poj 2152
树形DP
思路:这个没思路,看了陈启峰的论文写得。 #include<map> #include<set> #include<cmath> #include<queue> #include<cstdio> #include<vector> #include<string> #include<ioman
·
2015-11-13 00:06
poj
poj 1947
树形dp
思路:dp[i][j]表示,以i节点为根,删去j个节点最少要断几条边。 那么dp[u][j]=min(dp[u][j],dp[v][k]+dp[u][j-k]);//选取最优状态 dp[u][j]=min(dp[u][j],dp[u][j-son[v]]+1);//切断与子节点相连的边 对于子节点 dp[v][n-son[v]]=1; dp[v][j]=min(dp[v][j],dp[v
·
2015-11-13 00:01
poj
poj 3417
树形dp
+LCA
思路:我以前一直喜欢用根号n分段的LCA。在这题上挂了,第一次发现这样的LCA被卡。果断改用Tarjan离线算法求LCA。 当前节点为u,其子节点为v。那么: 当以v根的子树中含有连接子树以外点的边数为out[v]。 out[v]==0,dp[u]+=m; out[v]==1,dp[u]+=1; else dp[u]+=0; 最后就是dp[u]+=dp[v]。 对于u点的out[u]
·
2015-11-13 00:59
poj
hdu 4118
树形dp
思路:其实就是让每一条路有尽量多的人走。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include<map> #include<set> #include<cmath> #include<queue> #include<cstdio>
·
2015-11-13 00:56
HDU
hdu 4081 最小生成树+
树形dp
思路:直接先求一下最小生成树,然后用
树形dp
来求最优值。也就是两遍dfs。
·
2015-11-13 00:53
最小生成树
URAL1018. Binary Apple Tree
链接 简单
树形DP
1 #include <iostream> 2 #include<cstdio> 3 #include<cstring>
·
2015-11-13 00:25
binary
hdu4705Y
链接 这题可以算
树形DP
吧 树上的递推 对于树上的某个节点 反着算比较好做 就是算有多少有simple路径的 固定某个节点u 另两个节点 有两种取法 1.从不同子树里各选一个 2.从所有子树里选一个
·
2015-11-13 00:16
HDU
hdu1054Strategic Game(
树形DP
)
链接 归属简单
树形DP
挺简单的 跟第一道一样 就是我跑偏了题意。。
·
2015-11-13 00:15
game
poj3140Contestants Division
链接 这叫
树形DP
吗。。?断开某条边 求剩下两颗树数权值和的差最小 dfs一遍 枚举边 查了n久 wa n次 dp数组没初始化。。
·
2015-11-13 00:13
visio
VJP1100 加分二叉树(
树形DP
)
链接 归属
树形DP
做着更像记忆化 DP很好做 就是那个输出路径恶心了。。改代码 从60多行改到120多行。。dp从1维加到三维。。
·
2015-11-13 00:11
二叉树
poj1947Rebuilding Roads(
树形DP
)
链接 刚接触 树上背包。。有点抽象化 找好父亲和儿子的关系 及状态转移方程 代码里有详细的注释 就不解释了 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include&
·
2015-11-13 00:10
Build
hud1520Anniversary party(
树形DP
)
链接 第一道
树形DP
根据左儿子 右兄弟 将多叉树转化成二叉树 结构体里保存取这个节点和不取这个节点的最大值 1 #include <iostream> 2
·
2015-11-13 00:08
part
HDU 4169 Wealthy Family(
树形DP
)
Problem Description While studying the history of royal families, you want to know how wealthy each family is. While you have various 'net worth' figures for each individual throughout history, this
·
2015-11-13 00:12
HDU
【HDU2196 Computer】经典
树形dp
http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意:有n台电脑相连,让你求每台电脑与离它最远的那台电脑的距离。 思路:两遍搜索即可,第一遍从上到下,第二遍从小往上。对于某点,该点的最长半径为此点离自己孩子的最大距离和父亲节点传递下来的最长距离加连接此点的权值,两者之间选择最大值,但这里处理的时候要注意了,某点的孩子距离和父亲传递下来的最大距离可能
·
2015-11-12 23:40
com
poj 1463 Strategic game
id=1463 有两种做法,一种是二分图,一种是
树形DP
,这里两种都做了。 二分图的。
·
2015-11-12 22:13
game
Codeforces 337D Book of evil
一道
树形dp
,写出来是因为最近也做了道类似的.这题是看了分析的思路才做出来的,但感觉很多这样的dp都是利用类似的性质.像这题的话distDown很好想,但distUp
·
2015-11-12 22:32
codeforces
HDOJ
树形DP
专题之Accumulation Degree
分析:这题跟
树形DP
专题Computer那题有点像,那题是距离,这题是流量,本质还是一样。从结点k流出的流量,要么经过儿子结点流出,要么经过父亲结点流出。
·
2015-11-12 22:30
IO
HDOJ
树形DP
专题之Tree of Tree
题目链接 题目大意:给定一棵树,每个结点有一个值,求一棵含k个结点的子树,使子树的值最大。(树的值为所含结点的值的和) 分析:n最大为100,定义状态dp[u][k]为以结点u为根结点且含k个结点的子树的最大值。用左二子右兄弟来存树,不难写出状态转移方程。 纠结之处在于使用memset(dp,-1,sizeof(dp))就WA,改成memset(dp,0xff,sizeof(dp))就AC了
·
2015-11-12 22:30
tree
HDOJ
树形DP
专题之Centroid
题目链接 这题跟Balance Act那题差不多,求图的质点。我直接将那题改了一下提交,结果PE了一次,又WA了一次,最后发现是单case,多case的提交为什么WA呢? View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <vector> 4 #define
·
2015-11-12 22:29
dp
HDOJ
树形DP
专题之Tree Cutting
题目大意:给定一棵树,求移除树中哪些结点后,剩下的结点最多的连通支的结点数目不超过原树总结点的一半。 分析:先用dfs将无根树转为有根树,在一棵有根树中,去掉某个结点后,剩余的分支为儿子结点所在的分支和父亲结点所在的分支,取结点数目最多的一支即可。 View Code 1 #include <stdio.h> 2 #include <string.h>
·
2015-11-12 22:28
tree
HDOJ
树形DP
专题之Computer
题目链接 题目大意:给定一棵树,对树中每一个结点,求其距其他结点的最远距离。 分析:最初的想法是对每个结点求一次DFS,那样的话复杂度是O(N2),由于n最大可达10000,所以这个方法肯定会超时。根据树的特殊性可知,每个结点到距其最远的结点,要么通过其儿子结点到达,要么通过其父结点到达,由此想到可用树形动态规划。具体实现时,定义状态df[k],d1[k],d2[k],分别表示结点k通过父结点
·
2015-11-12 22:27
com
HDOJ
树形DP
专题之考研路茫茫——空调教室
题目链接 题目大意:给定一个连通无向图,每个结点有一个值,现要断开图中某条边,使得原图变成两个连通子图,且要使两个子图的值的差最小。输出最小差,若无法完成,则输出"impossible” 分析:要使断开某条边后,原图变成两个连通支,则断开的边一定是桥。对图进行DFS时,得到一颗树,图中有的而树中没有的边叫回边,回边一定不是桥。由此想到可用dfs将图转化为树来做,但树中的边不一定是原图
·
2015-11-12 22:27
dp
HDOJ
树形DP
专题之Contestants Division
题目链接 题目大意:给定一棵树,每个结点有一个权值,一棵树的权值为所有结点的权值和,现将这棵树分为两棵子树,要使得两子树的权值差最小。 我的做法是先将无根树化为有根树,然后求每棵子树的权值,最后用一次扫描求结果。需要注意的是结果要用long long型。 View Code 1 #include <stdio.h> 2 #include <string.h&
·
2015-11-12 22:25
visio
HDOJ
树形DP
专题之Godfather
题目链接 这题Balance Act那题差不多,不过这题的数据量更大,时间有点卡,我的O(N)的算法都跑了1100多MS(时限2S)。 View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <vector> 4 #define N 50005 5 #def
·
2015-11-12 22:24
Go
HDOJ
树形DP
专题之Balancing Act
题目链接 题目大意:给定一棵树,树的每个结点有一个权值,每个结点的权值=去掉该结点后剩余的分支中结点最多的那个分支的结点数。求树中权值最小的结点。 这题CE了两次,第一次因为使用了memset没包含头文件,第二次是因为GNU C++没有头文件<memory.h>,使用<string.h>就AC了。 View Code 1 #include <stdi
·
2015-11-12 22:23
dp
HDOJ
树形DP
专题之The more, The Better
题目链接 这题要用左二子,右兄弟的存储结构来存树(附加一个结点0,将森林连成树),然后就是在二叉树上DP。 View Code 1 #include <stdio.h> 2 #include <memory.h> 3 #define MAX(a,b) ((a)>(b)?(a):(b)) 4 #define N 205 5 int son
·
2015-11-12 22:22
more
HDOJ
树形DP
专题之Anniversary party
题目链接 没有上司的晚会,经典的
树形DP
题。
·
2015-11-12 22:22
part
COJ1115(Special Operation)
昨天晚上躺在床上时,突然想到曾经听说过
树形DP
,难道这题正是
·
2015-11-12 22:20
Opera
ZOJ 3626 Treasure Hunt I
一道
树形DP
+01背包的题。用dp[k][j]表示以k的根的树用j天最多可以得到多少宝藏, m是天数限制,因为要往返,所以将m/2以后就可以直接计算单程的值了。
·
2015-11-12 22:40
ZOJ
hdu4616_Game_
树形DP
思路:典型的
树形DP
,状态可用dp[x][y][z]来表示,x代表以x为根结点的子树,y代表恰好经过了几个陷阱,z代表方向(0,1
·
2015-11-12 22:22
game
hdu4169_Wealthy Family_
树形DP
(2011美国区域赛)
首先推荐国家集训队论文一篇:《浅谈几类背包问题-徐持衡》 http://wenku.baidu.com/view/751dd3ee856a561252d36f44.html 质量很高的一道题,练习赛的时候没做出来,写成了二维的记忆化搜索,150000的数据量,铁定超时。 正确解法应该每个节点开一个一维临时背包,再有一个全局背包记录当前状态(子树)最优值,通过局部背包去优化当前状态下全局背包的
·
2015-11-12 22:14
HDU
hdu 4044 GeoDefense (
树形dp
| 多叉树转二叉树)
题目链接: hdu-4044 题意 这是一个塔防游戏,地图是一个n个编号为1~n的节点的树, 节点1是敌人的基地,其他叶子节点都是你的基地。 敌人的基地会源源不断地出来怪兽,为了防止敌人攻进你的基地,你可以选择造塔。 每个节点最多只能造一个塔,且节点i可以有ki种塔供你选择,价钱和攻击力分别为price
·
2015-11-12 21:55
二叉树
然而我又更新博客了。
Week 3 Friday && Week4 Monday HDU 1011
树形DP
ACdream 1417求小于等于n的,能被k整除的数字p,要求p的字典序最小。
·
2015-11-12 20:37
博客
HDOJ 4276 The Ghost Blows Light(
树形DP
+背包)
分析:从1到n有一条必经之路,对这条路上的结点用
树形DP
求泛型背包,然后对这些点进行分组背包。
·
2015-11-12 19:02
host
POJ 1463 Strategic game(
树形DP
)
题意:给一棵树,当在某个结点上放置士兵时,与该点相邻的边就被看守住了,求最少需多少士兵才能看住树中所有边。 分析:先将无根树有根化,然后DP。 状态设计: 1、dp[i][0],表示在结点 i 没放置士兵的情况下,看住以结点 i 为根的子树的所有边所需的最少士兵; 2、dp[i][1],表示在结点 i 放置士兵的情况下,看住以结点 i 为根的子树的所有边所需的最少士
·
2015-11-12 19:55
game
HDOJ2412 Party at Hali-Bula (
树形DP
)
此题是经典
树形DP
题,没有上司的晚会。
·
2015-11-12 19:16
part
POJ 1155 TELE【
树形DP
】
广播台所在的节点编号为1分析:
树形DP
1.user[i].dp[j]表示从转发站i开始计算,
·
2015-11-12 19:29
poj
POJ 1947 Rebuilding Roads【树状DP】
分析:
树形DP
满足上诉条件的子树必由某个结点和它的若干子树组成, 1.用dp[i][j]表示结点i恰好保留j个子树时至少需要删除的边数,若结点i有子树s&
·
2015-11-12 19:27
Build
POJ 1155 (
树形DP
+背包+优化)
题目链接: http://poj.org/problem?id=1155 题目大意:电视台转播节目。对于每个根,其子结点可能是用户,也可能是中转站。但是用户肯定是叶子结点。传到中转站或是用户都要花钱,如果是用户,则还可以收钱。问在不亏本的前提下最多能有多少个用户看到节目。 解题思路: 比较麻烦的树形背包。首先cost=1。 花的钱权在边,收的钱权在点,且是叶子结点。所以首先可以对
·
2015-11-12 17:59
poj
Vijos 1180 (
树形DP
+背包)
题目链接: https://vijos.org/p/1180 题目大意:选课。只有根课选了才能选子课,给定选课数m, 问最大学分多少。 解题思路: 树形背包。cost=1。 且有个虚根0,取这个虚根也要cost,所以最后的结果是dp[0][m+1]。 本题是cost=1的特殊背包问题,在两个for循环上有一个优化。 for(f+1...j....cost) f
·
2015-11-12 17:58
OS
HDU 1011 (
树形DP
+背包)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1011 题目大意:树上取点,先取父亲,再取儿子。每个点,权为w,花费为cost,给定m消费总额,求最大权和。 解题思路: 树形背包模板题。首先建一个无向图。 每个点的cost=(bug[root]+19)/20,即虫子数不满20也要派一个人。 用dp[i][j]表示以i为根的子树中
·
2015-11-12 17:58
HDU
HDOJ 4003 Find Metal Mineral(
树形DP
)
题意: 一棵有权树,从根结点中放入 K 个机器人,求用这 K 个机器人遍历所有的结点最少的权值和。 思路: 1. dp[u][i] 表示给以 u 为根节点的子树放 i 个机器人,遍历其子树所需要的最小权值。 2. 关键在于 dp[u][0] 的理解,表示:最后停留在以 u 为根节点的子树下 0 个机器人,并且遍历了 u 子树的最小权值和。 3. 下面的步骤就变成和分组背包类似的情况了,根
·
2015-11-12 17:04
find
HDOJ 1561 The more, The Better(
树形DP
)
思路: 有依赖的背包、泛化背包的思想,和“金明的预算方案”那题是一样的。 dp[u][i] 表示 u 为根节点的子树,要攻击 i 个城堡所获得的最大金钱数目。其中 u 城堡是已经攻下来的。 则 dp[u][i] = max(dp[u][i], dp[v][i-1] + val[v]); 题目中设置出发点位 0,这样的话就可以把森林变成一个棵树,方便于解题。 解一:采用了泛
·
2015-11-12 17:03
more
POJ 1155 TELE(
树形DP
)
题意: 有一个电视台广播节目,广播的网络用一棵树表示,节点1表示电台,叶子结点表示用户,用户愿意付一定的钱去收看这个节目, 从非叶子结点到其他结点需要一定的费用(即从中继点到另一个中继点需要一些钱),问最后在不亏本的情况下,最多能使多少人收看到节目。 思路: 1. 和 POJ 1947 类似的题目,dp[u][i] 表示 u 节点为根,保留 i 个节点的最大盈利。 2. dp[u][i]
·
2015-11-12 17:02
poj
HDOJ 1011 Starship Troopers(
树形DP
)
树形DP
,要特殊考虑 m = 0 的情况, 2.
·
2015-11-12 17:02
oop
上一页
39
40
41
42
43
44
45
46
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他