【CodeVS 1163】访问艺术馆
http://codevs.cn/submission/2367697/
loli蜜汁(面向高一)树形dp是这道题的改编。
改编后的题目中每个展览厅的有多个不同的画,偷画的时间和画的价值也不同,求最大价值。
需要在叶节点上做01背包。
但codevs上的这道题就简单多了,直接改了改01背包交上去A了。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct nodeTreeDP {
struct node {int nxt, to;} E[100003];
int cnt, val[103], point[50003], f[103][603], m, tot;
nodeTreeDP() {
cnt = 0; tot = 1;
memset(E, 0, sizeof(E));
memset(f, 0, sizeof(f));
memset(point, 0, sizeof(point));
}
void ins(int u, int v) {E[++cnt] = (node) {point[u], v}; point[u] = cnt;}
void dfsread(int from) {
int t, x;
scanf("%d%d", &t, &x);
++tot;
ins(from, tot);
val[tot] = t << 1;
if (x) {
int w, c; w = 1; c = 5;
for(int i = 1; i <= x; ++i) {
for(int j = 600; j >= 0; --j)
if (j - (t << 1) - c >= 0)
f[tot][j] = max(f[tot][j], f[tot][j - c] + w);
}
} else {
int now = tot;
dfsread(now);
dfsread(now);
}
}
void readin() {
int t, x;
scanf("%d%d", &t, &x);
val[1] = t << 1;
if (!x) {
dfsread(1);
dfsread(1);
} else {
int w, c; w = 1; c = 5;
for(int i = 1; i <= x; ++i) {
for(int j = 600; j >= 0; --j)
if (j - (t << 1) - c >= 0)
f[1][j] = max(f[1][j], f[1][j - c] + w);
}
}
}
void TreeDP(int x) {
for(int i = point[x]; i; i = E[i].nxt)
TreeDP(E[i].to);
if (!point[x]) return;
int left = 0, right = 0;
for(int i = point[x]; i; i = E[i].nxt) {
if (!left) left = E[i].to;
else right = E[i].to;
}
for(int top = val[x]; top <= 600; ++top) {
int res = top - val[x];
for(int leftnum = 0; leftnum <= res; ++leftnum) {
int rightnum = res - leftnum;
f[x][top] = max(f[x][top], f[left][leftnum] + f[right][rightnum]);
}
}
}
void ansit() {
TreeDP(1);
printf("%d\n", f[1][m]);
}
} *T;
int main() {
T = new nodeTreeDP;
scanf("%d", &T->m);
T->readin();
T->ansit();
return 0;
}
【CodeVS 1163】访问艺术馆的更多相关文章
- codevs 1163 访问艺术馆
1163 访问艺术馆 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 皮尔是一个出了名的盗画者,他经过数月的精心准备,打算到艺术馆盗画.艺术馆的结 ...
- Codevs No.1163 访问艺术馆
2016-05-31 20:48:47 题目链接: 访问艺术馆 (Codevs No.1163) 题目大意: 一个贼要在一个二叉树结构的艺术馆中偷画,画都处于叶子节点处,偷画和经过走廊都需要时间,求在 ...
- codevs 访问艺术馆
/* codevs 1163 访问艺术馆 红果果的树形dp*/ #include<iostream> #include<cstdio> #include<cstring& ...
- codevs1163访问艺术馆(树形dp)
1163 访问艺术馆 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 皮尔是一个出了名的盗画者,他经过数月的精心准备, ...
- codevs 1163:访问艺术馆
题目描述 Description 皮尔是一个出了名的盗画者,他经过数月的精心准备,打算到艺术馆盗画.艺术馆的结构,每条走廊要么分叉为二条走廊,要么通向一个展览室.皮尔知道每个展室里藏画的数量,并且他精 ...
- 【codevs1163】访问艺术馆
题目描述 皮尔是一个出了名的盗画者,他经过数月的精心准备,打算到艺术馆盗画.艺术馆的结构,每条走廊要么分叉为二条走廊,要么通向一个展览室.皮尔知道每个展室里藏画的数量,并且他精确地测量了通过每条走廊的 ...
- 【codevs1163】访问艺术馆 树形dp
题目描述 皮尔是一个出了名的盗画者,他经过数月的精心准备,打算到艺术馆盗画.艺术馆的结构,每条走廊要么分叉为二条走廊,要么通向一个展览室.皮尔知道每个展室里藏画的数量,并且他精确地测量了通过每条走廊的 ...
- codevs1163访问艺术馆 树形dp
算裸的树形dp吧 回来复习一波 #include<cstdio> #include<cstring> #include<algorithm> #include< ...
- 2016. 4.10 NOI codevs 动态规划练习
1.codevs1040 统计单词个数 1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 De ...
随机推荐
- Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#)
http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2- ...
- jmeter jdbc request使用详解
1.在使用 jdbc request之前需要加载一个jar包 在test plan中将jar包引入到classpath中 2.创建一个JDBC Connection Configuration Var ...
- CSS中的常用属性
一 CSS文字属性:color : #999999; /*文字颜色*/font-family : 宋体,sans-serif; /*文字字体*/font-size : 9pt; /*文字大小*/fon ...
- [No00005A]word多文档合一
2个方法:法一,一个个插入,法二,一次性插入多个. 法一: 视图->大纲视图 点击 大纲 -> 显示文档 点击插入,逐个插入文档.. 最终 将视图调回页面视图..结束. 法二: 插入 - ...
- zkw费用流+当前弧优化
zkw费用流+当前弧优化 var o,v:..] of boolean; f,s,d,dis:..] of longint; next,p,c,w:..] of longint; i,j,k,l,y, ...
- BZOJ 3631 【JLOI2014】 松鼠的新家
Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树&q ...
- Windows 8.1 新增控件之 AppBar
Windows 8.1 与Windows 8 相比已经有了很多改进,从ITPro 角度这篇文章<What's New in Windows 8.1>已经表述的很详细.对开发者来说,最明显的 ...
- spring-自动加载配置文件\使用属性文件注入
在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到W ...
- 微软虚拟学院MVA 字幕获取方法
微软虚拟学院(MVA)上有一些不错的视频教程,但是,蛋疼的一点那就是视频要不就慢,要不就卡,总之当你的思维跟着视频深入的时候,duang~,卡一下,说不定就要重头开始,所幸的是提供了视频下载,下载速度 ...
- Redirect和Dispatcher 区别
使用forward是服务跳转,浏览器不知道它所请求的具体资源来源,浏览器的地址栏不会变:使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL ...