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 ...
随机推荐
- 不能访问tomcat中的项目
tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问. 关闭eclipse里面的tomcat,在 ...
- 怎样安装CentOS 6.6之三:磁盘分区的划分和修改
安装 CentOS(或Linux)系统,最难的就是磁盘分区.磁盘分区需要根据自己的实际使用需要来规划,以达到最优的效果. 工具/原料 CentOS 6.6 安装包 VMware 虚拟机 一.划分方 ...
- Linux线程退出、资源回收、资源清理的方法
首先说明线程中要回收哪些资源,理解清楚了这点之后在思考资源回收的问题. 1.子线程创建时从父线程copy出来的栈内存; 线程退出有多种方式,如return,pthread_exit,pthread_c ...
- 洛谷 1541 乌龟棋——dp
题目:https://www.luogu.org/problemnew/show/P1541 以用了几张牌为阶段.注意知道了用了4种牌各几张后,当前位置就是确定的,所以不用记录什么的. #includ ...
- sybase SQL记录
在一个表中复制一行,主键是MLID ';
- 一、mysql简述
该套讲义参考动力节点郭鑫老师的mysql视频整理所得 1.DBMS--数据库管理系统 Data Base Management System eg: mysql数据库管理系统 2.DB--数据库/仓 ...
- <正则吃饺子>:关于使用powerDesign连接oracle数据库,导出数据表结构(ER图吧)
最近做的项目中,没有完整的数据库表结构图(ER图),自己就根据服务器上oracle数据库和powerdesign整理一份,但是存在两个问题:1.没有把数据库表的相关备注弄下来:2.数据库表中的主外键关 ...
- GitHub---github入门
setup git --- create a repository-----fork a repository -- a pull request (be social)
- 算法导论17:摊还分析学习笔记(KMP复杂度证明)
在摊还分析中,通过求数据结构的一系列的操作的平均时间,来评价操作的代价.这样,即使这些操作中的某个单一操作的代价很高,也可以证明平均代价很低.摊还分析不涉及概率,它可以保证最坏情况下每个操作的平均性能 ...
- java集合框架之Collection
参考http://how2j.cn/k/collection/collection-collection/366.html Collection是 Set List Queue和 Deque的接口Qu ...