HDU3586 Information Disturbing(树形DP)
题目大概说一棵树有边权,要删掉一些边,使叶子到达不了树根1且删掉边的权和小于等于m,问删掉边中最大权的最小值能是多少。
考虑问题规模,与转移的时间复杂度,用这么个状态dp:
- dp[u][k]表示在u结点为根的子树中,使其叶子到达不了根的,删掉边的最大权小于等于k的最小被删边权和
 
转移略蛋疼,初始值的设定之类的感觉有点不统一。。反正最后感觉自己写得有点挫。。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#pragma comment(linker,"/STACK:102400000,102400000")
#define INF 1100000
#define MAXN 1111
struct Edge{
int v,w,next;
}edge[MAXN<<];
int NE,head[MAXN];
void addEdge(int u,int v,int w){
edge[NE].v=v; edge[NE].w=w; edge[NE].next=head[u];
head[u]=NE++;
}
long long d[MAXN][];
int mx;
void dp(int u,int w){
if(u!=){
for(int i=w; i<=mx; ++i) d[u][i]=w;
}
long long tmp[]={};
for(int i=head[u]; i!=-; i=edge[i].next){
int v=edge[i].v;
dp(v,edge[i].w);
for(int j=; j<=mx; ++j){
tmp[j]+=d[v][j];
}
}
for(int i=; i<=mx; ++i){
if(tmp[i]==) continue;
d[u][i]=min(d[u][i],tmp[i]);
}
}
int main(){
int n,m,a,b,c;
while(~scanf("%d%d",&n,&m) && (n||m)){
NE=;
memset(head,-,sizeof(head));
mx=;
for(int i=; i<n; ++i){
scanf("%d%d%d",&a,&b,&c);
addEdge(a,b,c);
mx=max(mx,c);
}
for(int i=; i<=n; ++i){
for(int j=; j<=mx; ++j) d[i][j]=INF;
}
dp(,);
int res=-;
for(int i=; i<=mx; ++i){
if(d[][i]<=m){
res=i;
break;
}
}
printf("%d\n",res);
}
return ;
}
HDU3586 Information Disturbing(树形DP)的更多相关文章
- [hdu3586]Information Disturbing树形dp+二分
		
题意:给出一棵带权无向树,以及给定节点1,总约束为$m$,找出切断与所有叶子节点联系每条边所需要的最小价值约束. 解题关键:二分答案,转化为判定性问题,然后用树形dp验证答案即可. dp数组需要开到l ...
 - hdu3586 Information Disturbing 树形DP+二分
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586 题目大意:给定n个敌方据点,编号1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值c ...
 - HDU 3586.Information Disturbing 树形dp 叶子和根不联通的最小代价
		
Information Disturbing Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/ ...
 - HDU - 3586 Information Disturbing 树形dp二分答案
		
HDU - 3586 Information Disturbing 题目大意:从敌人司令部(1号节点)到前线(叶子节点)的通信路径是一个树形结构,切断每条边的联系都需要花费w权值,现在需要你切断前线和 ...
 - HDU 3586 Information Disturbing 树形DP+二分
		
Information Disturbing Problem Description In the battlefield , an effective way to defeat enemies ...
 - [HDU3586]Information Disturbing(DP + 二分)
		
传送门 题意:给定一个带权无向树,要切断所有叶子节点和1号节点(总根)的联系,每次切断边的费用不能超过上限limit,问在保证总费用<=m下的最小的limit 二分答案,再 DP,看看最终结果是 ...
 - HDU3585 Information Disturbing 树形dp+二分
		
http://acm.split.hdu.edu.cn/showproblem.php?pid=3586 题意 : 给定一个带权无向树,要切断所有叶子节点和1号节点(总根)的联系,每次切断边的费用 ...
 - hdu3586 Information Disturbing  【树形dp】
		
题目链接 hdu3586 题解 二分 + 简单的树形dp 我正有练一下dp的必要了 #include<iostream> #include<cstdio> #include&l ...
 - hdu3586 Information Disturbing[二分答案+树形DP]
		
给定 n 个节点的树,边有权值.1 号点是根,除了 1 号点外的度数为 1 的节点是叶子.要求切断所有叶子和 1 号点之间的联系,切断一条边要花费这条边上权值对应的代价,要求总的代价不超过 m.在满足 ...
 
随机推荐
- 【视频】从零开始编写第一个PHP扩展
			
Rango会讲解在Linux下从零开始写一个PHP扩展,并编译安装到PHP里,一直到执行扩展中的函数.包含的内容有: 为什么要开发PHP扩展 ext_skel工具的使用 修改config.m4 php ...
 - Java中的封装
			
在前面的一些日子里,一只都在学习C#语言,使用C#在做一些小项目的,今天转到了Java的学习,还是感觉有点的不习惯,没有以前的中文界面的,全是英文.写起代码来都一直保持着C#中的编码的习惯,但是学习J ...
 - Model backing a DB Context has changed; Consider Code First Migrations
			
Model增加一个字段,数据库对应的也手动添加了字段但是运行时报错 The model backing the 'TopLogDbContext' context has changed since ...
 - [Effective JavaScript 笔记] 第2条:理解JavaScript的浮点数
			
JavaScript数值型类型只有数字 js只有一种数值型数据类型,不管是整数还是浮点数,js都把归为数字. typeof 17; // “number” typeof 98.6; // “num ...
 - ORACLE10G工作原理
			
数据库查询语句内部执行过程 Select * from xxx 步骤 分析阶段(parse) 1. 共享池库高速缓存有没有该语句.如果有直接返回结果. 2. 语法分 ...
 - poj1094  拓扑  Sorting It All Out
			
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 29744 Accepted: 10 ...
 - 【Web】关于URL中文乱码问题
			
关于URL编码 一.问题的由来 URL就是网址,只要上网,就一定会用到. ...
 - iOS 在使用UINavigationController和TabBarController时view的frame
			
可能是以前记错了,总认为在ios6上使用了UINavigationController或者TabBarController会因为多了bar而影响子controller的view的frame大小.今天在 ...
 - Java中static静态关键字的使用
			
我们可以基于一个类创建多个对象,每个对象都拥有自己的成员,所有成员变量的值是根据对象而存在的,有些时候我们希望一个类的所有对象共享一个成员,这就用到了static静态关键字 被静态关键字修饰的成员属于 ...
 - Road Construction(poj 3352)
			
题意:求最少天几条边,使这个无向图变成双连通图. /* tarjan缩点后,形成一棵树,求出叶子节点数tot,答案是(tot+1)/2 */ #include<cstdio> #inclu ...