Codeforces Round #530 (Div. 2) F - Cookies
思路:我们先考虑如何算出在每个节点结束最多能吃多少饼干, 这个dfs的时候用线段树维护一下就好了,
然后有个这个信息之后树上小dp一下就好啦。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ull unsigned long long using namespace std; const int N = 1e6 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-;
const double PI = acos(-); LL n, T, t[N], cnt[N], dp[N], ans[N];
vector<PLI> G[N]; #define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
LL a[N<<], sum[N<<];
void update(int p, LL val, int l=, int r=, int rt=) {
if(l == r) {
a[rt] += val;
sum[rt] += val*p;
return;
}
int mid = l + r >> ;
if(p <= mid) update(p, val, lson);
else update(p, val, rson);
a[rt] = a[rt<<] + a[rt<<|];
sum[rt] = sum[rt<<] + sum[rt<<|];
}
LL query(LL res, int l=, int r=, int rt=) {
if(sum[rt] <= res) return a[rt];
if(l == r) return res / l;
int mid = l + r >> ;
if(res <= sum[rt<<]) return query(res, lson);
else return query(sum[rt<<], lson) + query(res-sum[rt<<], rson);
} void getDp(int u, LL res) {
update(t[u], cnt[u]);
dp[u] = query(res);
for(auto e : G[u]) getDp(e.se, res-e.fi);
update(t[u], -cnt[u]);
} void dfs(int u) {
ans[u] = dp[u];
if(u == ) {
LL mx = ;
for(auto e : G[u]) dfs(e.se), mx = max(mx, ans[e.se]);
ans[u] = max(ans[u], mx);
} else {
LL mx = , mx2 = ;
for(auto e : G[u]) {
dfs(e.se);
if(ans[e.se] >= mx) mx2 = mx, mx = ans[e.se];
else if(ans[e.se] > mx2) mx2 = ans[e.se];
}
ans[u] = max(ans[u], mx2);
}
} int main() {
cin >> n >> T;
for(int i = ; i <= n; i++) cin >> cnt[i];
for(int i = ; i <= n; i++) cin >> t[i];
for(int i = ; i <= n; i++) {
LL p, l; cin >> p >> l;
G[p].push_back(mk(l<<, i));
}
getDp(, T);
dfs();
printf("%lld\n", ans[]);
return ;
} /*
*/
Codeforces Round #530 (Div. 2) F - Cookies的更多相关文章
- Codeforces Round #530 (Div. 2)F Cookies (树形dp+线段树)
题:https://codeforces.com/contest/1099/problem/F 题意:给定一个树,每个节点有俩个信息x和t,分别表示这个节点上的饼干个数和先手吃掉这个节点上一个饼干的的 ...
- Codeforces Round #530 (Div. 2) F (树形dp+线段树)
F. Cookies 链接:http://codeforces.com/contest/1099/problem/F 题意: 给你一棵树,树上有n个节点,每个节点上有ai块饼干,在这个节点上的每块饼干 ...
- Codeforces Round #530 (Div. 2) F 线段树 + 树形dp(自下往上)
https://codeforces.com/contest/1099/problem/F 题意 一颗n个节点的树上,每个点都有\(x[i]\)个饼干,然后在i节点上吃一个饼干的时间是\(t[i]\) ...
- Codeforces Round #485 (Div. 2) F. AND Graph
Codeforces Round #485 (Div. 2) F. AND Graph 题目连接: http://codeforces.com/contest/987/problem/F Descri ...
- Codeforces Round #486 (Div. 3) F. Rain and Umbrellas
Codeforces Round #486 (Div. 3) F. Rain and Umbrellas 题目连接: http://codeforces.com/group/T0ITBvoeEx/co ...
- Codeforces Round #501 (Div. 3) F. Bracket Substring
题目链接 Codeforces Round #501 (Div. 3) F. Bracket Substring 题解 官方题解 http://codeforces.com/blog/entry/60 ...
- Codeforces Round #499 (Div. 1) F. Tree
Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...
- Codeforces Round #376 (Div. 2)F. Video Cards(前缀和)
题目链接:http://codeforces.com/contest/731/problem/F 题意:有n个数,从里面选出来一个作为第一个,然后剩下的数要满足是这个数的倍数,如果不是,只能减小为他的 ...
- Codeforces Round #271 (Div. 2) F. Ant colony (RMQ or 线段树)
题目链接:http://codeforces.com/contest/474/problem/F 题意简而言之就是问你区间l到r之间有多少个数能整除区间内除了这个数的其他的数,然后区间长度减去数的个数 ...
随机推荐
- word 公式为图片
- Spring Boot 源码分析 数据源 + Mybatis 配置
公司今年开始使用 Spring Boot 开发,当然使用 Spring Boot 也是大势所趋,尤其是现在微服务的趋向,当然是选择基于Spring Boot 的 Spring Cloud.(所谓的 S ...
- spring注解 @Scheduled(cron = "0 0 1 * * *")实现定时的执行任务
@Scheduled(cron = "0 0 1 * * *") 在使用该注解以前请做好以下准备工作,配置好相应的xm文件. 配置定时注解的步骤:http://blog.csdn. ...
- css 基础1
css 层叠样式表 css手册 样式写在head 中间 style标签 css 样式规则: 选择器 {属性:属性值:属性:属性值} 字体样式属性:font-size 字号大小 color 字体颜色 f ...
- Java入门系列(八)多线程
基本线程类指的是Thread类,Runnable接口,Callable接口 典型多线程问题 生产者-消费者 死锁问题
- CSS规范 - 命名规则--(来自网易)
使用类选择器,放弃ID选择器 ID在一个页面中的唯一性导致了如果以ID为选择器来写CSS,就无法重用. NEC特殊字符:"-"连字符 "-"在本规范中并不表示连 ...
- ASP.NET实现网站的自动升级
网站的自动升级主要是要实现从一台服务器上下载某些文件到本服务器上,然后对下载下来的文件进行更新等操作. 比如,现在有服务器A,服务器B和客户端C. 作为COM公司开发的产品DIV网站系统被安装到服务器 ...
- Flex 数组问题!
设计一个图形类,来对应一个图形! 这个类大概的代码是: public class ShapeModel extends ... { [bindable] private var _x:Number = ...
- Flex 经验笔记一
Module页面嵌套子Module页面直接用标签嵌入是不行的,无法显示出来,需要用到 ModuleManager 使用ModuleInfo 的 addEventListener 判断当子Module ...
- 20155217 2016-2017-2 《Java程序设计》第5周学习总结
20155217 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 java中所有错误都会被包装为对象,可以尝试(try)执行程序并捕捉(catch)代 ...