HDU-3586 Information Disturbing(树形DP+删边)
题目大意:一棵有n个节点的有根树,1为根节点,边带权,表示删掉这条边的代价。现在要删掉一些边,使叶子节点不能到达根节点。但是,每次删除的边的代价不能超过limit,删掉的边的总代价不能超过m,求最小的limit的可能取值。
题目分析:二分枚举limit,定义状态dp(u)表示将u与它管辖的叶子节点失去联系所需要的总代价,则:
dp(u)+=min(dp(son),e[i].w),e[i].w<=limit;
dp(u)+=dp(son) e[i].w>limit;
代码如下:
- # include<iostream>
- # include<cstdio>
- # include<cstring>
- # include<vector>
- # include<queue>
- # include<list>
- # include<set>
- # include<map>
- # include<string>
- # include<cmath>
- # include<cstdlib>
- # include<algorithm>
- using namespace std;
- # define LL long long
- const int N=1005;
- const int INF=1000001;
- struct Edge
- {
- int w,to,nxt;
- };
- Edge e[N];
- int n,m;
- int du[N];
- int maxn,cnt;
- int dp[N];
- int head[N];
- void add(int u,int v,int w)
- {
- e[cnt].to=v;
- e[cnt].w=w;
- e[cnt].nxt=head[u];
- head[u]=cnt++;
- }
- void init()
- {
- int a,b,c;
- cnt=maxn=0;
- memset(du,0,sizeof(du));
- memset(head,-1,sizeof(head));
- for(int i=1;i<n;++i){
- scanf("%d%d%d",&a,&b,&c);
- ++du[a];
- ++du[b];
- maxn=max(maxn,c);
- add(a,b,c);
- add(b,a,c);
- }
- }
- void dfs(int u,int fa,int limit)
- {
- //cout<<u<<endl;
- if(du[u]==1&&u!=1){
- dp[u]=INF;
- return ;
- }
- dp[u]=0;
- for(int i=head[u];i!=-1;i=e[i].nxt){
- int v=e[i].to;
- if(v==fa) continue;
- dfs(v,u,limit);
- if(e[i].w>limit)
- dp[u]+=dp[v];
- else
- dp[u]+=min(dp[v],e[i].w);
- }
- }
- int solve()
- {
- if(n==1)
- return 0;
- int l=1,r=maxn+1;
- while(l<r){
- int mid=l+(r-l)/2;
- dfs(1,-1,mid);
- if(dp[1]>m)
- l=mid+1;
- else
- r=mid;
- }
- dfs(1,-1,r);
- if(dp[1]>m) return -1;
- return r;
- }
- int main()
- {
- //新的主题
- while(~scanf("%d%d",&n,&m)&&(n+m))
- {
- init();
- printf("%d\n",solve());
- }
- return 0;
- }
HDU-3586 Information Disturbing(树形DP+删边)的更多相关文章
- HDU - 3586 Information Disturbing 树形dp二分答案
HDU - 3586 Information Disturbing 题目大意:从敌人司令部(1号节点)到前线(叶子节点)的通信路径是一个树形结构,切断每条边的联系都需要花费w权值,现在需要你切断前线和 ...
- 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+二分
Information Disturbing Problem Description In the battlefield , an effective way to defeat enemies ...
- HDU 3586 Information Disturbing(二分+树形dp)
http://acm.split.hdu.edu.cn/showproblem.php?pid=3586 题意: 给定一个带权无向树,要切断所有叶子节点和1号节点(总根)的联系,每次切断边的费用不能超 ...
- 【题解】hdu 3586 Information Disturbing 二分 树形dp
题目描述 Information DisturbingTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java ...
- hdu 3586 Information Disturbing(树形dp + 二分)
本文出自 http://blog.csdn.net/shuangde800 题目链接: hdu-3586 题意 给一棵n个节点的树,节点编号为1-n,根节点为1.每条边有权值,砍掉一条边要花费 ...
- HDU 3586 二分答案+树形DP判定
HDU 3586 『Link』HDU 3586 『Type』二分答案+树形DP判定 ✡Problem: 给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏 ...
- [hdu3586]Information Disturbing树形dp+二分
题意:给出一棵带权无向树,以及给定节点1,总约束为$m$,找出切断与所有叶子节点联系每条边所需要的最小价值约束. 解题关键:二分答案,转化为判定性问题,然后用树形dp验证答案即可. dp数组需要开到l ...
- HDU 3586 Information Disturbing (二分+树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586 给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏 ...
- HDU 3586 Information Disturbing (树形DP,二分)
题意: 给定一个敌人的通信系统,是一棵树形,每个节点是一个敌人士兵,根节点是commander,叶子是前线,我们的目的是使得敌人的前线无法将消息传到commander,需要切断一些边,切断每条边需要一 ...
随机推荐
- powershell ise好字库和diy配色文件分享
Windows PowerShell ISE (集成脚本环境) 是 Win中自带的脚本编写工具. 在 Windows PowerShell ISE 中,可以在单个基于 Windows 的图形用户界面中 ...
- DotNetBar v12.6.0.4 Fully Cracked
更新信息: http://www.devcomponents.com/customeronly/releasenotes.asp?p=dnbwf&v=12.6.0.4 如果遇到破解问题可以与我 ...
- Oracle创建用户并给用户授权查询指定表或视图的权限
MSV31账户登录数据库进行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAULT TABLESPACE "TBS_DN ...
- 苹果 iOS 8 新固件新功能特性总结汇总 (苹果 iPhone/iPad 最新移动操作系统)
苹果在 WWDC 2014 大会上正式发布了其最新的 OS X Yosemite 桌面系统以及 iOS 8 移动操作系统,虽然 iOS 8 依然延续了 iOS7 的扁平化设计风格,但在功能上却还是给我 ...
- <转>用thinkPHP实现验证码的功能
许多系统的登录都有验证码,而如果使用thinkPHP框架搭建网站的话,验证码的生成和验证就比较容易了 1.生成验证码 thinkPHP有对应生成验证码的方法 要使用验证码,需要导入扩展类库中的ORG. ...
- 实用的WPF Xml的简易读写类以及用法示例
转自:http://www.silverlightchina.net/html/study/WPF/2012/0808/17980.html 最近真是写博客写的不可收拾,今天再来一篇. 因为做一些程序 ...
- UITableView错误 ‘unable to dequeue a cell with identifier Cell'
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequeueReusableCellWithIdentif ...
- 配置VS2010具有代码提示功能
Visual Assist X是一款非常好的Microsoft Visual Studio插件,可以支持Microsoft Visual Studio 2003,Microsoft Visual St ...
- 【LeetCode OJ】Best Time to Buy and Sell Stock III
Problem Link: http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ Linear Time Solut ...
- ERP客户关系渠管理(二十)
渠道的需求: