LA 4015 树形背包
题目链接:https://vjudge.net/contest/164840#problem/D
题意: 给一棵树,每条边上有一些权值,求 长度不超过 x ,最多能走多少个点;
分析:
考虑每一个节点,他可以一直走下去,也可以走回来而走到他的兄弟节点;
状态定义:
d[x][j][0/1] 从 i 出发,走 j 个节点的最短距离;
1、回来,这就是一个背包,更新当前节点;
2、不回来,则是要考虑从哪个部分不回来;
#include <bits/stdc++.h> using namespace std; int n;
const int maxn = ;
const int inf = 0x3f3f3f3f;
vector <int> g[maxn];
int cnt[maxn];
int son[maxn]; int d[maxn][maxn][]; void dfs(int x) { for(int i=; i<=n; i++)
d[x][i][] = d[x][i][] = inf;
d[x][][] = d[x][][] = ; son[x] = ;
for(int i=; i<g[x].size(); i+=) {
int y = g[x][i];
int len = g[x][i+];
dfs(y); for(int j=son[x]; j>; j--) { ///这一重 相当于前面几个背包
for(int k=; k<=son[y]; k++) { ///这一重 相当于当前这个背包中拿物品
d[x][j+k][] = min(d[x][j+k][],d[x][j][]+d[y][k][]+len*);
d[x][j+k][] = min(d[x][j+k][],min(d[x][j][]+d[y][k][]+len*,d[x][j][]+d[y][k][]+len));
}
} son[x] +=son[y];
}
} int main() {
int cas = ;
while(scanf("%d",&n),n) {
for(int i=; i<=n; i++)
g[i].clear(); memset(cnt,,sizeof(cnt));
for(int i=; i<n-; i++) {
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
cnt[u]++;
g[v].push_back(u);
g[v].push_back(w);
} int root = ;
for(int i=; i<n; i++)
if(!cnt[i])
root = i; dfs(root);
int q,x;
scanf("%d",&q);
printf("Case %d:\n",cas++);
while (q--) {
scanf("%d",&x);
int ans = ;
for (int i = ; i <= n; i++)
if (d[root][i][] <= x)
ans = i;
printf("%d\n",ans);
} }
return ;
}
膜拜猫奴大牛;
LA 4015 树形背包的更多相关文章
- poj2486Apple Tree[树形背包!!!]
Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9989 Accepted: 3324 Descri ...
- cdoj 1136 邱老师玩游戏 树形背包
邱老师玩游戏 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1136 Desc ...
- HDU 1011 树形背包(DP) Starship Troopers
题目链接: HDU 1011 树形背包(DP) Starship Troopers 题意: 地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...
- poj 1155 TELE (树形背包dp)
本文出自 http://blog.csdn.net/shuangde800 题目链接: poj-1155 题意 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构, ...
- bzoj 4813: [Cqoi2017]小Q的棋盘 [树形背包dp]
4813: [Cqoi2017]小Q的棋盘 题意: 某poj弱化版?树形背包 据说还可以贪心... #include <iostream> #include <cstdio> ...
- [HAOI2015]树上染色(树形背包)
有一棵点数为 N 的树,树边有边权.给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 . 将所有点染色后,你会获得黑点两两之间的距离加 ...
- Luogu 1273 有线电视网 - 树形背包
Description 树形背包, 遍历到一个节点, 枚举它的每个子节点要选择多少个用户进行转移. Code #include<cstring> #include<cstdio> ...
- BZOJ2427: [HAOI2010]软件安装 tarjan+树形背包
分析: 一开始我以为是裸的树形背包...之后被告知这东西...可能有环...什么!有环! 有环就搞掉就就可以了...tarjan缩点...建图记得建立从i到d[i]之后跑tarjan,因为这样才能判断 ...
- [Jsoi2016]最佳团体 BZOJ4753 01分数规划+树形背包/dfs序
分析: 化简一下我们可以发现,suma*ans=sumb,那么我们考虑二分ans,之后做树形背包上做剪枝. 时间复杂度证明,By GXZlegend O(nklogans) 附上代码: #includ ...
随机推荐
- oracle 笔记---(五)__内存管理
###查看连接池的信息 select connection_pool,status,maxsize from dba_cpool_info
- (转)淘宝系统信息采集和监控工具tsar
淘宝系统信息采集和监控工具tsar 项目地址:https://github.com/alibaba/tsar 一.介绍 Tsar是淘宝的系统信息采集和监测工具,主要用来收集服务器的系统信息(如cpu, ...
- log4j 2整理
# Log4j 2最佳实践 #Log4j的1.x版本已经被广泛使用于很多应用程序中.然而,它这些年的发展已经放缓.它变得越来越难以维护,因为它需要严格遵循很老的Java版本,并在2015年8月寿终正寝 ...
- pat1003. Emergency (25)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- DEM、DSM、DOM 名词解释
1.DEM(Digital Elevation Matrix) 数字高程矩阵. 数字高程模型(Digital Elevation Model,缩写DEM)是一定范围内规则格网点的平面坐标(X,Y)及其 ...
- Ajax的XMLHttpRequest对象
编写一个例子:从服务器取回一个Hello Ajax字符串. HTML: <input type="button" value="ajax提交" oncli ...
- FFmpegInterop 库在 Windows 10 应用中的编译使用
FFmpegInterop 简介 FFmpegInterop 是微软推出的封装 FFmpeg 的一个开源库,旨在方便在 Windows 10.Windows 8.1 以及 Windows Phone ...
- Halcon学习笔记——机器视觉应用工程开发思路及相机标定
机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...
- Sturct类型装箱时会遇到的问题
Object在拆箱时会在栈空间生成一个临时变量.所以Struct在使用时尽量将内容都声明为readonly为好 [<Struct>] type Point= val mutable X:d ...
- 2017年11月4日 vs类和结构的区别&哈希表&队列集合&栈集合&函数
类和结构的区别 类: 类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存 类有构造和析构函数 类可以继承和被继承 结构: 结构是值类型在栈上分配(虽然栈的访问速度比 ...