时间限制:12000ms
单点时限:1000ms
内存限制:256MB

描述

编织者是 Dota 系列中的一个伪核,拥有很强的生存能力和线上消耗能力。编织者的代表性技能是缩地。缩地带来的隐身、极限移动速度和伤害让它拥有很高的机动性以及赖线和收割的能力。

假设当前作战区域是一棵有根树,编织者所在的位置为根节点1,树中每个节点,有一个权值vi,代表这个节点的收益。树中的每条边,有一个权值wi,代表每条边的长度。编织者从根结点出发,最远累计移动距离时,所能得到的收益的最大值是多少?注意重复经过一个节点收益只能计算一次。

输入

第一行包含一个整数 n (1 ≤ n ≤ 100),表示节点总数。

接下来的一行,包含 n 个数字,表示一个结点的价值 vi(0 ≤ vi ≤ 2)。

接下来的 n-1 行,每行三个整数 (aibiwi)。表示一条连接 aibi 节点的边,边长为 wi (1 ≤ ai, bi ≤ n, 1 ≤ wi ≤ 104)。

接下来的一行包含一个数 q,表示询问总数 (0 ≤ q  ≤ 100000)。 接下来 q 行,每行包含一个整数 d ( ≤ d  ≤ 106),表示从根结点出发,最远累计移动的距离 d 。

输出

对于每组询问,输出一行表示对应的询问所能得到的最大收益。

样例输入
3
0 1 1
1 2 5
1 3 3
3
3
10
11
样例输出
1
1
2

简直了,开始把为了方便找错,把200写成20,结果提交后一直wa,200和20又长得怎么像。艾玛啊,咯咯鸡。

注意边界即可,思路好想,不多解释。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<memory>
using namespace std;
const int maxn=;
const int inf=1e9; int vis[maxn],n,m;
int dp[maxn][maxn][],V[maxn];
int Laxt[maxn],Next[maxn],To[maxn],dis[maxn],cnt; void _add(int u,int v,int d)
{
Next[++cnt]=Laxt[u];
Laxt[u]=cnt;
To[cnt]=v;
dis[cnt]=d;
} int _dfs(int u)
{
vis[u]=true;
for(int i=Laxt[u];i;i=Next[i]){
int v=To[i];
if(vis[v]) continue;
_dfs(v);
for(int j=;j>=;j--)
for(int k=j;k>=;k--){ //此处的边界特殊在可以为j,也可以为0
dp[u][j][]=min(dp[u][j][],dp[u][j-k][]+dp[v][k][]+*dis[i]);
dp[u][j][]=min(dp[u][j][],dp[u][j-k][]+dp[v][k][]+dis[i]);
dp[u][j][]=min(dp[u][j][],dp[u][j-k][]+dp[v][k][]+*dis[i]);
}
}
} int main()
{
int i,j,u,v,d,q;
scanf("%d",&n);
for(i=;i<=;i++)
for(j=;j<=;j++)
dp[i][j][]=dp[i][j][]=inf;
for(i=;i<=n;i++) {
scanf("%d",&V[i]);
dp[i][V[i]][]=;
dp[i][V[i]][]=;
}
for(i=;i<n;i++){
scanf("%d%d%d",&u,&v,&d);
_add(u,v,d);
_add(v,u,d);
}
_dfs();
scanf("%d",&q);
while(q--){
scanf("%d",&u);
for(i=;i>=;i--) if(dp[][i][]<=u) break;
printf("%d\n",i);
}
return ;
}

HihoCoder 1063 : 缩地 树形DP第二题(对象 边)的更多相关文章

  1. POJ 1155 TELE 背包型树形DP 经典题

    由电视台,中转站,和用户的电视组成的体系刚好是一棵树 n个节点,编号分别为1~n,1是电视台中心,2~n-m是中转站,n-m+1~n是用户,1为root 现在节点1准备转播一场比赛,已知从一个节点传送 ...

  2. POJ 2342 树形DP入门题

    有一个大学的庆典晚会,想邀请一些在大学任职的人来參加,每一个人有自己的搞笑值,可是如今遇到一个问题就是假设两个人之间有直接的上下级关系,那么他们中仅仅能有一个来參加,求请来一部分人之后,搞笑值的最大是 ...

  3. 51nod 1353 树 | 树形DP经典题!

    51nod 1353 树 | 树形DP好题! 题面 切断一棵树的任意条边,这棵树会变成一棵森林. 现要求森林中每棵树的节点个数不小于k,求有多少种切法. 数据范围:\(n \le 2000\). 题解 ...

  4. P2016 战略游戏——树形DP大水题

    P2016 战略游戏 树形DP 入门题吧(现在怎么是蓝色标签搞不懂): 注意是看见每一条边而不是每一个点(因为这里错了好几次): #include<cstdio> #include< ...

  5. (树形DP入门题)Anniversary party(没有上司的舞会) HDU - 1520

    题意: 有个公司要举行一场晚会.为了让到会的每个人不受他的直接上司约束而能玩得开心,公司领导决定:如果邀请了某个人,那么一定不会再邀请他的直接的上司,但该人的上司的上司,上司的上司的上司等都可以邀请. ...

  6. HDU 2196 Computer 树形DP 经典题

    给出一棵树,边有权值,求出离每一个节点最远的点的距离 树形DP,经典题 本来这道题是无根树,可以随意选择root, 但是根据输入数据的方式,选择root=1明显可以方便很多. 我们先把边权转化为点权, ...

  7. CF 337D Book of Evil 树形DP 好题

    Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This area contains n se ...

  8. CF 219D Choosing Capital for Treeland 树形DP 好题

    一个国家,有n座城市,编号为1~n,有n-1条有向边 如果不考虑边的有向性,这n个城市刚好构成一棵树 现在国王要在这n个城市中选择一个作为首都 要求:从首都可以到达这个国家的任何一个城市(边是有向的) ...

  9. hdu_Anniversary party_(树形DP入门题)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:有N个人,N-1个人有自己的上司,每个人有一个快乐值,如果这个人参加了聚会,那么这个人的直 ...

随机推荐

  1. POJ2159 ancient cipher - 思维题

    2017-08-31 20:11:39 writer:pprp 一开始说好这个是个水题,就按照水题的想法来看,唉~ 最后还是懵逼了,感觉太复杂了,一开始想要排序两串字符,然后移动之类的,但是看了看 好 ...

  2. RabbitMQ入门(5)——主题(Topic)

    前面我们介绍了通过使用direct exchage,改善了fanout exchange只能进行虚拟广播的方式.尽管如此,直接交换也有自身的局限,它不能基于多个条件路由. 在我们的日志系统中,也许我们 ...

  3. ABP 源码分析汇总之 IOC

    IOC的优点: 1. 依赖接口,而非实现,如下代码, 这样的好处就是,客户端根本不知道PersonService的存在,如果我们换一下IPersonService的实现,客户端不用任何修改, 说的简单 ...

  4. MySQL之长连接、短连接、连接池

    当数据库服务器和客户端位于不同的主机时,就需要建立网络连接来进行通信.客户端必须使用数据库连接来发送命令和接收应答.数据.通过提供给客户端数据库的驱动指定连接字符串后,客户端就可以和数据库建立连接了. ...

  5. MVVM中轻松实现Command绑定任意事件的Command

    下面是“银光中国”(不错的WPF或SL网站)WPF学习教程中的一个连接, http://www.silverlightchina.net/html/study/WPF/2011/0715/9034.h ...

  6. 小米2S手机 - Charles无法安装证书 因为无法读取证书

    1.不要使用小米原装的浏览器安装证书 2.使用第三方浏览器安装,如我使用的是UC浏览器 3.使用第三方浏览器安装的证书格式是".pem"格式问卷 4.将这个文件放入小米的downl ...

  7. sql 多个字段分组,删除重复记录,保留ID最小的一条

    IF OBJECT_ID('cardDetail') IS NOT NULL DROP TABLE cardDetail CREATE TABLE cardDetail ( id ,) PRIMARY ...

  8. 中国剩余定理——nyoj

    中国剩余定理------解法如下:假设存在一个数M M%A=a , M%B=b , M%C=c并且A,B,C必须俩俩互质.满足这一条件下:存在一个R1使得 , K1=A*B*R1 ,K1%C==1.存 ...

  9. mysql 5.1.71升级到5.6.30

    mysql 5.1.71升级到5.6.30 mysqldump -h主机名 -P端口 -u用户名 -p密码 (–database) 数据库名 > 文件名.sql 备份MySQL数据库的命令 my ...

  10. date.timezone not set in php.ini. Please contact ...解决方案

    无论是在LAMP还是在LNMP系统环境下, 只要PHP的版本在5.3及其以上的版本时, 无论是在安装oscommerce, 还是在安装zen cart, 以及其他的CMS时, 都会遇到如下所示的错误信 ...