博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu3586 Information Disturbing 【树形dp】
阅读量:5303 次
发布时间:2019-06-14

本文共 1661 字,大约阅读时间需要 5 分钟。

题目链接

题解

二分 + 简单的树形dp

我正有练一下dp的必要了

#include
#include
#include
#include
#include
#define LL long long int#define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt)#define REP(i,n) for (int i = 1; i <= (n); i++)#define BUG(s,n) for (int i = 1; i <= (n); i++) cout<
<<' '; puts("");using namespace std;const int maxn = 1005,maxm = 100005,INF = 1000000000;inline int read(){ int out = 0,flag = 1; char c = getchar(); while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();} while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();} return out * flag;}int h[maxn],ne = 2;struct EDGE{int to,nxt,w;}ed[maxm];inline void build(int u,int v,int w){ ed[ne] = (EDGE){v,h[u],w}; h[u] = ne++; ed[ne] = (EDGE){u,h[v],w}; h[v] = ne++;}int fa[maxn],w[maxn];int n,m,lim;void DFS(int u){ Redge(u) if ((to = ed[k].to) != fa[u]){ fa[to] = u; w[to] = ed[k].w; DFS(to); }}LL f[maxn][2];void dfs(int u){ if (w[u] <= lim) f[u][1] = w[u]; else f[u][1] = INF; f[u][0] = 0; int cnt = 0; Redge(u) if ((to = ed[k].to) != fa[u]){ dfs(to); cnt++; f[u][0] += min(f[to][0],f[to][1]); } if (!cnt) f[u][0] = INF;}bool check(int x){ lim = x; dfs(1); return f[1][0] <= m;}int main(){ while ((n = read()) && (m = read())){ memset(h,0,sizeof(h)); ne = 2; int a,b,w; for (int i = 1; i < n; i++){ a = read(); b = read(); w = read(); build(a,b,w); } DFS(1); int l = 1,r = m,mid; while (l < r){ mid = l + r >> 1; if (check(mid)) r = mid; else l = mid + 1; } if (check(l)) printf("%d\n",l); else puts("-1"); } return 0;}

转载于:https://www.cnblogs.com/Mychael/p/9009894.html

你可能感兴趣的文章
每秒处理10万高并发订单的乐视集团支付系统架构分享
查看>>
Lua_02
查看>>
ios蓝牙详解
查看>>
安装MySQL5.7.18遇到的坑
查看>>
React Native在Android平台运行gif的解决方法转载
查看>>
Mybatis RowBounds 是逻辑分页
查看>>
hdu 3341(ac自动机+状态压缩)
查看>>
51单片机之蓝牙遥控小车_效果展示+单片机知识+完整蓝牙电车代码
查看>>
使用WNMP时报的错
查看>>
扩展Django内置的auth模块代码示例
查看>>
Sql Server中REPLACE函数的使用
查看>>
SqlServerl的行转列
查看>>
《信息安全系统设计基础》第三周问题总结
查看>>
nextInt()和nextLine()一起使用时的注意点
查看>>
java如何获取一个对象的大小【转】
查看>>
MobilePhone正则表达式
查看>>
2017年3月17日上午日志
查看>>
JavaScript跨域总结与解决办法
查看>>
Hover功能
查看>>
[LeetCode] Jump Game II
查看>>