LA 4015 树形DP 在路程不超过k的情况下,求最多可到达多少节点
来源:互联网 发布:太原新医医院网络平台 编辑:程序博客网 时间:2024/04/30 15:53
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct node{int to,next,val;}e[1000];int head[1000],cnt,n,vis[1000],num[1000];int dp[560][560][2];void add_edge(int from,int to,int val){e[cnt].to=to;e[cnt].val=val;e[cnt].next=head[from];head[from]=cnt++;}void dfs(int u){vis[u]=num[u]=1;dp[u][1][0]=dp[u][1][1]=0;for(int i=head[u];i!=-1;i=e[i].next){int to=e[i].to;int val=e[i].val;if(vis[to])continue;dfs(to);num[u]+=num[to];for(int j=num[u];j>1;j--)for(int k=1;k<=j&&k<=num[to];k++){dp[u][j][1]=min(dp[u][j][1],dp[u][j-k][1]+dp[to][k][1]+2*val);dp[u][j][0]=min(dp[u][j][0],dp[u][j-k][1]+dp[to][k][0]+val);dp[u][j][0]=min(dp[u][j][0],dp[u][j-k][0]+dp[to][k][1]+2*val);}}}int main(){int t=1;while(~scanf("%d",&n)&&n){memset(vis,0,sizeof(vis));memset(dp,0x3f,sizeof(dp));memset(head,-1,sizeof(head));cnt=0; for(int i=1;i<n;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); add_edge(b,a,c); } dfs(0); printf("Case %d:\n",t++); int q; scanf("%d",&q); while(q--) { int x; scanf("%d",&x); for(int i=n;i>=0;i--) if(dp[0][i][0]<=x||dp[0][i][1]<=x) { printf("%d\n",i); break;}} }}
阅读全文
0 0
- LA 4015 树形DP 在路程不超过k的情况下,求最多可到达多少节点
- 在不超过价格上限的情况下,点k个菜有多少种点法
- 【BestCoder Round 65D】【树形DP 容斥思想】ZYB's Tree 求距离每个节点距离不超过k的节点数
- 【codeforces 680 D】【数学+贪心+DFS】【求一个不超过 m 的最大体积 X, 每次选一个最大的 x 使得 x3 不超过当前剩余体积。问在能选最多个数的情况下,X 最大是多少】
- HDU 2196 树形DP + 节点到达的最长距离
- 求不超过N的正整数中因子最多的数
- 有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。
- 800个节点的完全二叉树共有多少个叶子节点?相反,已知叶子节点,求最多有多少个节点!
- 数位dp 求l-r(10进制) 在k进制中有多少个回文数的模板
- uva 11280 求2点之间最短距离(图中不超过k个节点)
- (hdu step 5.1.4)Farm Irrigation(在两个节点合并有限制条件的情况下,求集合的个数)
- poj2486 Apple Tree(树形DP,有反回的情况,求最大)........很典型
- poj 1947 Rebuilding Roads 【树形DP】 【求至少删去树中 多少条边 使得树中节点数为P】
- 在n不确定的情况下生成k个随机数
- openstack节点被激活的情况下不能在该节点下新建虚拟机
- 树形dp求树的重心 poj1655
- 树形DP求树的直径
- 机器人可到达的总格数
- Oracle连接总结
- java 集合 LinkedHashSet
- 文章标题 CSU 1963: Feed the rabbit (斜率DP优化)
- poj1195(二维树状数组,点修改,区间求和)
- Leetcode练习<十八> 罗马数字转换为整数
- LA 4015 树形DP 在路程不超过k的情况下,求最多可到达多少节点
- 1127: 矩阵乘积
- LeetCode | 66. Plus One
- Knight Tournament
- 2017山东省赛B题(SDUT3894打表找规律!!!!!!!!!!!!!)
- Android持久化技术之SharedPreferences存储
- oracle查询一列数据,合并成字符串,以,分割
- :=和?=
- Web常用编码以及攻击绕过笔记