题目描述 Description

皮尔是一个出了名的盗画者,他经过数月的精心准备,打算到艺术馆盗画。艺术馆的结构,每条走廊要么分叉为二条走廊,要么通向一个展览室。皮尔知道每个展室里藏画的数量,并且他精确地测量了通过每条走廊的时间,由于经验老道,他拿下一副画需要5秒的时间。你的任务是设计一个程序,计算在警察赶来之前(警察到达时皮尔回到了入口也算),他最多能偷到多少幅画。

输入描述 Input Description

第1行是警察赶到得时间,以s为单位。第2行描述了艺术馆得结构,是一串非负整数,成对地出现:每一对得第一个数是走过一条走廊得时间,第2个数是它末端得藏画数量;如果第2个数是0,那么说明这条走廊分叉为两条另外得走廊。数据按照深度优先得次序给出,请看样例

输出描述 Output Description

输出偷到得画得数量

样例输入 Sample Input

60

7 0 8 0 3 1 14 2 10 0 12 4 6 2

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

s<=600

走廊的数目<=100


错觉吗?感觉树形的DP更好理解

解析:

题目很贴心的让我们以深搜的顺序输入,定义 ut 为到当前节点 cur 所花费的时间,由于偷完还要溜掉,要走一个来回,所以 ut*2,我们用 f[i][j] 表示 到 i 节点花费 j 时间能偷走的画

当往下走的时候,要么是二岔路,要么就到达画室。

如果是画室,我们到达画室看还剩余的时间 tot-ut ,从这个时间到 tot 就是你自由的时间(偷东西……溜),因为每偷一幅画需要 5 分钟,而最多可偷 sf ,我们就取一个最小值,即 f[cur][i] =min( (i-ut)/5 , sf)

如果是二岔路,左右都走完后更新该父节点,还是在自由的时间内(tot-ut)得到最优结果

代码如下

#include<stdio.h>
#include<algorithm>
using namespace std;
int tot,cnt,f[110][610];void dfs()
{int cur=++cnt;int ut,sf;scanf("%d%d",&ut,&sf);ut*=2;if(sf) {for(int i=ut;i<=tot;++i)f[cur][i]=min((i-ut)/5,sf);}else {int l=cnt+1;dfs();int r=cnt+1;dfs();for(int i=ut;i<=tot;++i)for(int j=0;j<=i-ut;++j) {f[cur][i]=max(f[cur][i],f[l][j]+f[r][i-ut-j]);}}
} int main()
{scanf("%d",&tot);dfs();printf("%d",f[1][tot]);return 0;
}

学长哒(注释是我的,因为之前没理解)

#include<cstdio>
#include<algorithm>
using namespace std;
int xd,cnt,f[105][601];
void dfs()
{int b=++cnt,ut,sf;scanf("%d%d",&ut,&sf);ut<<=1;if(sf)for(int i=ut;i<=xd;i++)f[b][i]=min((i-ut)/5,sf);//到 b 节点用时 i 得到的画else{int l=cnt+1;dfs();//左边深搜 int r=cnt+1;dfs();//右边深搜 for(int i=ut;i<=xd;i++)  for(int j=0;j<=i-ut;j++)f[b][i]=max(f[b][i],f[l][j]+f[r][i-ut-j]);//更新父节点
    }
}
int main()
{scanf("%d",&xd);dfs();printf("%d",f[1][xd]);return 0;
}

转载于:https://www.cnblogs.com/qseer/p/9448002.html

访问艺术馆(codevs 1163)树形DP相关推荐

  1. codevs1163访问艺术馆(树形dp)

    1163 访问艺术馆  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 皮尔是一个出了名的盗画者,他经过数月的精心准备,打算 ...

  2. 【学时总结】◆学时·VIII◆ 树形DP

    ◆学时·VIII◆ 树形DP DP像猴子一样爬上了树--QwQ ◇ 算法概述 基于树的模型,由于树上没有环,满足DP的无后效性,可以充分发挥其强大统计以及计算答案的能力. 一般来说树形DP的状态定义有 ...

  3. layui树形父子不关联_DP专题7 | 没有上司的舞会 洛谷1352(树形DP)

    高能预警:这是一篇超过5分钟的学习文章,暑假了可以多学会 本篇继续咱们的DP专题,树形DP入门.动态规划每一个类型的DP都是深坑,期望童鞋们自己在这个系列的基础上多花时间进行拓展,学习愉快~ 在讨论树 ...

  4. Perfect service(树形dp)

    Perfect service(树形dp) 有n台机器形成树状结构,要求在其中一些机器上安装服务器,使得每台不是服务器的计算机恰好和一台服务器计算机相邻.求服务器的最小数量.n<=10000. ...

  5. 2018.09.01 独立集(树形dp)

    描述 给定一颗树(边权为1),选取一个节点子集,使得该集合中任意两个节点之间的距离都大于K.求这个集合节点最多是多少 输入 第一行是两个整数N,K 接下来是N-1行,每行2个整数x,y,表示x与y有一 ...

  6. leetcode 337. House Robber III | 337. 打家劫舍 III(树形dp;什么情况下dp需要强制包含当前元素?)

    题目 https://leetcode.com/problems/house-robber-iii/ 思考:什么情况下 dp 需要强制包含当前元素? dp 过程中,需要包含当前元素 的例子: leet ...

  7. 【codevs1163】访问艺术馆,圣战の终焉

    访问艺术馆 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Description 皮尔是一个出了名的盗画者,他经过数月的精心准备,打算到艺术馆盗 ...

  8. BZOJ 2878: [Noi2012]迷失游乐园( 树形dp )

    一棵树的话直接树形dp(求出往下走和往上走的期望长度). 假如是环套树, 环上的每棵树自己做一遍树形dp, 然后暴力枚举(环上的点<=20)环上每个点跑经过环上的路径就OK了. -------- ...

  9. 【洛谷P4084】Barn Painting【树形DP】

    题目大意: 题目链接:https://www.luogu.org/problemnew/show/P4084 一棵nnn个节点的树上有kkk个点已被染色.求将这棵树染成三种颜色且相邻的节点颜色不同的方 ...

  10. 蓝魔法师——树形DP

    链接:https://ac.nowcoder.com/acm/problem/20811 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

最新文章

  1. 微信小程序之录音与播放功能(完整示例demo)
  2. CES 2018即将揭幕:AI平台之争烽烟骤起
  3. 【Java 虚拟机原理】动态字节码技术 | Dalvik ART 虚拟机 | Android 字节码打包过程
  4. 怎么让员工服从管理_面对员工抬杠,情绪负面,管理者,你该怎么管
  5. Vue 开发环境显示log信息
  6. java 多线程 信号量_Java核心-多线程(7)-并发控制器-Semaphore信号量
  7. 华为tftp服务器如何配置文件,配置tftp服务器
  8. (附源码)计算机毕业设计ssm公立医院绩效考核系统
  9. 【硬见小百科】数字万用表的工作原理
  10. 笔记本电脑插入耳机仍然外放(亲测有效)
  11. 第一次滑雪小记——杭州临安大明山滑雪场
  12. LoadRunner 常用函数大全+1
  13. [总结]Android系统体系结构
  14. Android接入高德地图SDK 一引入高德sdk
  15. bootstrap 表格表头固定
  16. 如何学习投资 推荐几本教材
  17. 测试喇叭SPL软件,SPL 立体声监听控制器 MTC 2381 评测
  18. 联想笔记本昭阳K22-80重装win7纪要
  19. 专利发明人是子公司的员工,专利申请人是母公司名称,在职称评审时这个专利对子公司员工算不算成果
  20. php 自动获取头像,PHP_WordPress中用于获取及自定义头像图片的PHP脚本详解,get_avatar()(获取头像) get_avat - phpStudy...

热门文章

  1. 【转】adns解析库——域名解析实例(C++、linux)
  2. 在Vue中使用Echarts可视化库的完整步骤记录
  3. java中null+和null+null的深入理解
  4. mysql创建有参数的函数,7-3:MySQL 创建不带参数的自定义函数
  5. 漫游飞行_涨知识了,手机的飞行模式还能这么用?
  6. @data注解_SpringBoot入门实践(七)-Spring-Data-JPA实现数据访问
  7. redis新数据类型-Geospatial
  8. Mybatis 延迟加载策略
  9. c语言函数与宏定义的应用,C语言第3次实_函数与宏定义的应用.doc
  10. java.lang.integer_java 中 关于java.lang.ArrayStoreException: java.lang.Integer异常,是什么原因?...