CF739B
深搜的过程中保存路径,二分路径中满足要求的区段。不必将每个节点的ans加1,只需将合法区段末尾加1同时将开头减1来表示并保存在一个“前缀”数组中即可。最后再dfs一次累加得到答案。
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#define MAXN 200000
using namespace std;
typedef long long ll;
int n, a[MAXN + ], res[MAXN + ], path[MAXN + ];
ll sum[MAXN + ], ans[MAXN + ];
struct node
{
int to, cost;
};
vector<node> G[MAXN + ];
void solve(int x, int d, ll s)
{
sum[d] = s;
path[d] = x;
int l = lower_bound(sum + , sum + d + , s - a[x]) - sum - ;
res[path[d]]++;
res[path[l]]--;
for (int i = ; i < G[x].size(); i++)
{
solve(G[x][i].to, d + , s + G[x][i].cost);
}
}
void dfs(int x)
{
ans[x] = res[x];
for (int i = ; i < G[x].size(); i++)
{
dfs(G[x][i].to);
ans[x] += ans[G[x][i].to];
}
}
int main()
{
cin >> n;
for (int i = ; i <= n; i++)
{
scanf("%d", &a[i]);
}
for (int i = ; i < n - ; i++)
{
int x, y;
scanf("%d %d", &x, &y);
node tmp;
tmp.to = i+;
tmp.cost = y;
G[x].push_back(tmp);
}
solve(, , );
dfs();
for (int i = ; i <= n; i++)
printf("%I64d ", ans[i]-);
puts("");
//("pause");
return ;
}
CF739B的更多相关文章
- 【CF739B】Alyona and a tree(树上差分,二分,树形DP)
题意:给出一棵有根树,树上每个点.每条边都有一个权值. 现在给出“控制”的定义:对一个点u,设点v在其子树上,且dis(u,v)≤av,则称u控制v. 要求求出每个点控制了多少个点 n (1 ≤ n ...
- CF739B Alyona and a tree
嘟嘟嘟 前缀和+倍增+树上差分 假设\(v\)是\(u\)子树中的一个点,那么\(u\)能控制\(v\)的条件是受\(v\)的权值的限制,而并非\(u\).因此我们就能想到计算每一个点的贡献,即\(v ...
随机推荐
- why ftp服务器采用多进程模式
为什么没有采用多线程或者IO复用,原因是在多线程或IO复用的情况下,当前目录是共享的,无法根据每一个连接来拥有自己的当前目录. 多进程模式下,一个连接拥有2个进程,一个是nobody进程,一个是服务进 ...
- MTCNN人脸检测识别笔记
论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 论文链接:https:// ...
- android项目源码
[置顶] Android精品开源项目整理_V20140221(持续更新中..) 让我们回顾下2013年有哪些精品资源:Android精品开源项目整理_V20131115(持续更新中..) 引言: ...
- SQL 系统表
http://www.cnblogs.com/asdcer/archive/2007/05/14/746377.aspx
- window.location js截取url地址
window.location方法的说明 原文链接: http://jiantian.org/index.php?page_id=2 window.location.href 整个URl字符串(在浏览 ...
- 项目中常用的js骚操作
//打开网址window.open("http://www.runoob.com"); //判断是否为url var url = $("#url").val() ...
- PhpStorm之操作数据库
对数据库进行基本的操作 还不清楚如何使用PhpStorm连接本地数据库的朋友看一下我的上一篇博客配置数据库连接 点击已经连接好的数据库,找到下图中的 Consoles,然后点击 console(def ...
- [Xcode 实际操作]九、实用进阶-(19)重写父类的绘图方法,使用图形上下文绘制自定义图形
目录:[Swift]Xcode实际操作 本文将演示如何使用图形上下文,绘制自定义图形. 使用快捷键[Command]+[N]创建一个新的类文件. (在项目文件夹[DemoApp]上点击鼠标右键[New ...
- mysql引擎问题研究
mysql引擎问题研究 数据库引擎 缺省情况下,MYSQL支持三个引擎:ISAM,MYISAM和HEAP.还存在MYSQL+API的引擎例如InnoDB. 数据库引擎特点 ISAM:执行读取操作速度很 ...
- [Noip模拟题]统计方案
题目并不难,想一下就会了,我真的智商持续下降,取模情况下做除法我都没想到逆元. 总之想到逆元就好写了,还是\(meet\ in\ the\ middle\)裸题,数组开不下用\(hash/map\)存 ...