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 ...
随机推荐
- oracle12C--DG搭建配置
一,主库前期操作 搭建的话和11g差不多,点点点. 两台服务器,一台主库,一台从库 01,配置主库hosts cat /etc/hosts 192.168.0.31 node12c01 192.168 ...
- mysql 问题总结[转]
一.Can't connect to MySQL server on 'localhost' (10061) 不能连接到 localhost 上的mysql分析:这说明“localhost”计算机 ...
- kafaka安装
wget https://mirrors.cnnic.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz 解压 Tar -xvf kafka_2.11-2.0.0.t ...
- gradle cache目录(.gradle)剖析
https://zhuanlan.zhihu.com/p/26473930 gradle下载后会对文件路径进行修饰,本文给出反向解析,把文件路径修改为原始路径的办法. 之所以研究这个,本来的目的是为了 ...
- Hadoop Ecosytem
There are a lot of Hadoop related projects which are open sourced and widely used by many componies. ...
- angular 兼容IE浏览器
安装classlist.babel-polyfill: npm install --save classlist.js npm install --save babel-polyfill 修改 src ...
- nyoj 791——Color the fence——————【贪心】
Color the fence 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 Tom has fallen in love with Mary. Now Tom w ...
- (一)环境安装之Java
一.安装JDK 点击 JDK8下载,根据自己的平台,选择相应的版本进行下载. Java环境分JDK和JRE ,JDK就是Java Development Kit. 简单的说JDK是面向开发人员使用的S ...
- 分支结构case……end
语法: case when 条件1 then 结果1 when 条件2 then 结果2 ……….. else 其它结果 end 执行顺序: 条件1成立执行结果1 条件2成立执行结果2 如果所有的wh ...
- SpringSecurity 3.2入门(4)登录密码加密
密码admin 进行MD5 32位加密为21232F297A57A5A743894A0E4A801FC3 增加spring-security.xml文件配置如下 <!-- 认证管理器,配置Spr ...