描述

curimit知道陶陶很喜欢吃苹果。于是curimit准备在陶陶生日的时候送给他一棵苹果树。

curimit准备了一棵这样的苹果树作为生日礼物:这棵苹果树有n个节点,每个节点上有c[i]个苹果,这棵树高度为h。

可是,当curimit把这棵树给陶陶看的时候,陶陶却说:“今年生日不收礼,收礼只收节点数减高度不超过k的苹果树。”这下curimit犯难了,curimit送来的树枝繁叶茂,不满足节点数-高度≤k。于是curimit决定剪掉一些枝条,使得修剪过后的树满足节点数-高度≤k,但是curimit又想保留尽量多的苹果数目。curimit想请你帮他算算经过修剪后的树最多能保留多少个苹果。

注:
一, 节点1为树根,不能把它剪掉。

二, 1个节点的树高度为1。
格式
输入格式

输入文件的第一行为两个整数n,k分别表示这棵树有n个节点,修剪后的树节点数-高度≤k。

第二行开始到第n+1行,每行有两个数,第i+1行的两个数father[i]和c[i]分别表示节点i的父亲是father[i]和节点i处有c[i]个苹果。

规定:节点1的父亲为0。
输出格式

输出文件仅包含一行,ans,表示在满足修建后的树节点数-高度≤k的条件下,最多能保留多少个苹果。
样例1
样例输入1[复制]

5 1
    0 1
    1 1
    1 3
    2 10
    3 4

样例输出1[复制]

15

限制

全部1秒
提示

【约定】
对于10%的数据, n≤10
对于30%的数据, n≤100 0≤k≤20
对于100%的数据,n≤4000 0≤k≤=500

神啦,树形依赖背包还可以出成这样

我们回忆我们怎么做树形依赖背包的

s是i的儿子,f[s]的初值为f[i],dfs(s),然后f[i,v]:=min(f[i,v],f[i,v-1]+a[s])

这样的话我们发现叶子节点存的f其实就是处理了这条链左边的节点所得到的信息

仔细观察题目条件,我们发现这个是树形依赖背包,但是有一条链免费,所以我们dfs两次,一次从左往右,一次从右往左

然后我们枚举免费的链,只枚举根到叶子节点的(1.我们只能保证叶子节点有上面这个性质2.免费的链当然是越深越好啦),然后更新答案

orz出题人

 const
maxn=;
maxk=;
var
fl,fr:array[..maxn,..maxk]of longint;
v:array[..maxn,..maxn]of longint;
a,sum,f:array[..maxn]of longint;
n,k,ans:longint; function max(x,y:longint):longint;
begin
if x>y then exit(x);
exit(y);
end; procedure dfsl(x:longint);
var
i,j:longint;
begin
sum[x]:=sum[f[x]]+a[x];
for i:= to v[x,] do
begin
for j:= to k do
fl[v[x,i],j]:=fl[x,j];
dfsl(v[x,i]);
for j:= to k do
fl[x,j]:=max(fl[x,j],fl[v[x,i],j-]+a[v[x,i]]);
end;
end; procedure dfsr(x:longint);
var
i,j:longint;
begin
for i:=v[x,] downto do
begin
for j:= to k do
fr[v[x,i],j]:=fr[x,j];
dfsr(v[x,i]);
for j:= to k do
fr[x,j]:=max(fr[x,j],fr[v[x,i],j-]+a[v[x,i]]);
end;
end; procedure main;
var
i,x:longint;
begin
read(n,k);
for i:= to n do
begin
read(f[i],a[i]);
inc(v[f[i],]);v[f[i],v[f[i],]]:=i;
end;
dfsl();
dfsr();
for i:= to n do
if v[i,]= then
for x:= to k do
ans:=max(ans,fl[i,x]+fr[i,k-x]+sum[i]);
writeln(ans);
end; begin
main;
end.

P1676陶陶吃苹果 - vijos的更多相关文章

  1. [Vijos 1676] 陶陶吃苹果

    Description curimit知道陶陶很喜欢吃苹果.于是curimit准备在陶陶生日的时候送给他一棵苹果树. curimit准备了一棵这样的苹果树作为生日礼物:这棵苹果树有n个节点,每个节点上 ...

  2. 武汉科技大学ACM:1007: 陶陶摘苹果

    Problem Description 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹 ...

  3. 洛谷-陶陶摘苹果(升级版)-BOSS战-入门综合练习1

    题目描述 Description 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同 ...

  4. NOIP2005-普及组复赛-第一题-陶陶摘苹果

    题目描述 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...

  5. noip普及组2005 陶陶摘苹果

    陶陶摘苹果 描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 现在 ...

  6. 2719:陶陶摘苹果-poj

    2719:陶陶摘苹果 总时间限制:  1000ms 内存限制:  65536kB 描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米 ...

  7. 洛谷 P1478 陶陶摘苹果(升级版)

    本萌新第一次发布题解,若有不严谨处请谅解. 我看了前面几位大佬的手笔,表示自己还是比较钟爱桶排序的.它非常简易直接,还省时间,尤其对于这类题目占用的的空间也很小. 我们看到题目下面的说明:xi< ...

  8. C语言 · 陶陶摘苹果2

    算法提高 陶陶摘苹果2   时间限制:1.0s   内存限制:256.0MB      问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个 ...

  9. C语言 · 陶陶摘苹果

    算法提高 陶陶摘苹果   时间限制:1.0s   内存限制:256.0MB      问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个3 ...

随机推荐

  1. shell命令getopts解析

    getopts是一条获取和处理命令行选项的语句,格式为getopts option_string variable .其中option_string中包含一个有效的单字符选项,若getopts命令在命 ...

  2. MySQL写入插入数据优化配置

    *innodb_buffer_pool_size 如果用Innodb,那么这是一个重要变量.相对于MyISAM来说,Innodb对于buffer size更敏感.MySIAM可能对于大数据量使用默认的 ...

  3. Dos下查询关闭端口的命令例子

    1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr "8080" TCP     127.0.0.1:80         0.0.0 ...

  4. 关于IIS中WEB网站访问弹“验证输入框”及“401限制访问”的解决办法

    最近在配置IIS网站的过程中,不管是本地还是外部访问配置的网站,出现了需要输入用户名.密码.及域的对话框,解决之后又出现页面401限制访问的错误页面. 就这两项错误,依次做一下解决办法的整理. 解决流 ...

  5. Windows下用cmd命令安装及卸载服务

    第一种方法: 1. 开始 ->运行 ->cmd2. cd到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(Framework版本号按IIS配置) ...

  6. 细说SQL 连接

          连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句       也可以包含搜索条件,以进一步筛选连接条件所选的行.         ...

  7. UI2_IOS坐标系

    // // AppDelegate.m // UI2_IOS坐标系 // // Created by zhangxueming on 15/6/29. // Copyright (c) 2015年 z ...

  8. 7款经典炫酷的HTML5/jQuery动画应用示例及源码

    jQuery是一款普遍受前端开发者欢迎的Javascript框架,但是开发者貌似更关注jQuery开发的插件,海量的jQuery插件让前端开发者非常方便.HTML5的加入让jQuery这个家族更加丰富 ...

  9. java中的异常处理机制_函数覆盖时的异常特点

    /*注意:异常声明在函数上 异常在子父类覆盖时的体现1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者异常的子类2.如果父类方法抛出多个异常,那么子类在覆盖该方法 ...

  10. 从零开始搭建TestCpp工程

    目标: 创建一个测试工程,测试工程以列表的方式展示,没一个列表项对应一个场景 1. 创建cocos2d-x工程       现在采用脚本的方式来创建,好处是一次可以创建N个项目的工程.      首先 ...