HDU 3586

『Link』HDU 3586

『Type』二分答案+树形DP判定

✡Problem:

给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线。现要切断前线和司令部的联系,每次切断边的费用不能超过上限limit,问切断所有前线与司令部联系所花费的总费用少于m时的最小limit。第一行输入的n,m;之后是n-1条边,我们要求最小的limit。\(1\leq n\leq 1000,1\leq m\leq 10^6\)

✡Answer:

这个直接想二分limit,用树形dp求出断掉所有叶子的最小值,之后判断dp[1]<=m(dp[i]表示要切断以i为根的其它所有子树的最小代价)还是挺难想的。但是直接一个for循环拍过去的话也是可以过的(2.5s)之后也就可以想到用二分优化了。

但是这个INF还是挺难弄的,大了会溢出,小了又会wa,要仔细想下,正好是1000 *1000再加一点就行了。

『Complexity』\(O(nlogn)\)

✡Code:

#include <map>
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <set>
#include <queue>
#include <cstring>
#include <algorithm>
using namespace std;
#define cle(a,v) memset(a,(v),sizeof(a))
#define fo(i,a,b) for(int i=(a);i<=(b);i++)
#define fd(i,a,b) for(int i=(a);i>=(b);i--)
#define ll long long
const int maxn = 1e3 + 7, INF = 1000007;
int n, m, u, v, w, tot, head[maxn], dp[maxn];
struct Edge {
int v, w, next;
} edges[maxn << 1];
void added(int u, int v, int w) {
edges[tot] = Edge{v, w, head[u]};
head[u] = tot++;
}
void init() {
cle(head, -1);
tot = 0;
}
void dfs(int u, int fa, int mid) {
int flag = 0;
dp[u] = 0;
for (int i = head[u]; ~i; i = edges[i].next) {
int v = edges[i].v;
int w = edges[i].w;
if (v == fa) continue;
flag = 1;
dfs(v, u, mid);
if (w > mid) {
dp[u] += dp[v];
}
else {
dp[u] += min(w, dp[v]);
}
}
if (flag == 0) dp[u] = INF;
}
int main() {
freopen("1.in", "r", stdin);
while (scanf("%d%d", &n, &m), n + m) {
init();
int l = 1, r = 1;
for (int i = 1; i < n; i++) {
scanf("%d%d%d", &u, &v, &w);
r = max(r, w);
added(u, v, w); added(v, u, w);
}
int dd = r;
while (l <= r) {
int mid = l + r >> 1;
dfs(1, -1, mid);
if (dp[1] <= m) {
r = mid - 1;
}
else {
l = mid + 1;
}
}
if (l < 1 || l > dd) {
l = -1;
}
printf("%d\n", l);
}
return 0;
}

HDU 3586 二分答案+树形DP判定的更多相关文章

  1. BZOJ_2097_[Usaco2010 Dec]Exercise 奶牛健美操_二分答案+树形DP

    BZOJ_2097_[Usaco2010 Dec]Exercise 奶牛健美操_二分答案+树形DP Description Farmer John为了保持奶牛们的健康,让可怜的奶牛们不停在牧场之间 的 ...

  2. HDU - 3586 Information Disturbing 树形dp二分答案

    HDU - 3586 Information Disturbing 题目大意:从敌人司令部(1号节点)到前线(叶子节点)的通信路径是一个树形结构,切断每条边的联系都需要花费w权值,现在需要你切断前线和 ...

  3. HDU 3586 Information Disturbing 树形DP+二分

    Information Disturbing Problem Description   In the battlefield , an effective way to defeat enemies ...

  4. HDU 3586.Information Disturbing 树形dp 叶子和根不联通的最小代价

    Information Disturbing Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/ ...

  5. BZOJ1758[Wc2010]重建计划——分数规划+长链剖分+线段树+二分答案+树形DP

    题目描述 输入 第一行包含一个正整数N,表示X国的城市个数. 第二行包含两个正整数L和U,表示政策要求的第一期重建方案中修建道路数的上下限 接下来的N-1行描述重建小组的原有方案,每行三个正整数Ai, ...

  6. hdu3586 Information Disturbing[二分答案+树形DP]

    给定 n 个节点的树,边有权值.1 号点是根,除了 1 号点外的度数为 1 的节点是叶子.要求切断所有叶子和 1 号点之间的联系,切断一条边要花费这条边上权值对应的代价,要求总的代价不超过 m.在满足 ...

  7. 3月28日考试 题解(二分答案+树形DP+数学(高精))

    前言:考试挂了很多分,难受…… --------------------- T1:防御 题意简述:给一条长度为$n$的序列,第$i$个数的值为$a[i]$.现让你将序列分成$m$段,且让和最小的一段尽 ...

  8. BZOJ4985 评分(二分答案+树形dp)

    首先二分答案简化一下问题,现在只有0和1了,要求最后剩下的是1.再简化一下考虑没有已固定的位置怎么做.考虑每个位置由其合并到的位置连边,显然这样形成了一棵三叉树.设f[i]为使得某位置为1其子树至少要 ...

  9. BZOJ2282 SDOI2011消防/NOIP2007树网的核(二分答案+树形dp)

    要求最大值最小容易想到二分答案.首先对每个点求出子树中与其最远的距离是多少,二分答案后就可以标记上一些必须在所选择路径中的点,并且这些点是不应存在祖先关系的.那么如果剩下的点数量>=3,显然该答 ...

随机推荐

  1. react-native项目中集成react-native-camera插件

    1. 安装 yarn add react-native-camera 2. 手动关联 (1)在AndroidManifest.xml中添加权限配置 <uses-permission androi ...

  2. 前端开发-1React-1概述

    React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设Instagram 的网站.做出来以后,发现这套东西很 ...

  3. 习题集1b: 额外练习 (可选)

    1.练习:4.样本特点 用来描述样本的数字叫做? □ 参数   (√)□ 统计量 □ 变量 □ 常数 2.练习:5.大一学生体重情况 Freidman 博士在一所大学任教,她记录了所在大学每位大一新生 ...

  4. PyCharm 怎么查看 Python 的变量类型和变量内容

    一.在程序的某一行添加断点 二.选择 debug 程序

  5. Boredom

    Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winte ...

  6. Windows Server 2008 R2 修改远程桌面服务RDP默认端口及相应的防火墙配置

    修改以下两个注册表项当中的默认端口3389为自定义端口: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wd ...

  7. 网络编程-Python高级语法-property属性

    知识点: 一.什么是property属性? 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法,Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最 ...

  8. 手把手教你安装nmon

    一.nmon简介 nmon是由IBM 提供.免费监控 AIX 系统与 Linux 系统资源的工具.该工具可帮助在一个屏幕上显示服务器系统资源耗用情况,并动态地对其进行更新.此外,他还可以利用 exce ...

  9. 关于UITabBarController的设置(iOS 开发)

    1.设置图片(选中以及未选中) UITabBarItem *TuiJianItem=[[UITabBarItem alloc]initWithTitle:@"我的" image:[ ...

  10. CSS之属性操作

    (1)css text 文本 文本颜色:color 颜色属性被用来设置文字的颜色 颜色是通过css最经常的指定: *十六进制值—如:#FF0000 *一个RGB值---如:RGB(255,0,0) * ...