
Codeforces Round #381 (Div. 1) B. Alyona and a tree (树上差分)
思路:如果v收u的控制,那么在u->v的路径中的所有点都可以控制v,,点数可以回溯求,只要在到点u的时候二分一下这条链路径上的第一个大于等于dis【u】-a【u】的点,在那个位置减1,差分一下就好。
发布日期:2021-05-08 15:17:24
浏览次数:13
分类:精选文章
本文共 699 字,大约阅读时间需要 2 分钟。


#includeusing namespace std;typedef long long ll;const int maxn=2e5+1;ll w,a[maxn],dis[maxn],ans[maxn];vector >g[maxn];vector >q;void dfs(int u,int fa){ ans[u]=1; int pos=lower_bound(q.begin(),q.end(),make_pair(dis[u]-a[u],0))-q.begin(); pos--; if(pos>=0) ans[q[pos].second]--; q.push_back(make_pair(dis[u],u)); for(auto to:g[u]) { if(to.first==fa) continue; dis[to.first]=dis[u]+to.second; dfs(to.first,u); ans[u]+=ans[to.first]; } q.pop_back();}int main(){ int n,u; scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%lld",&a[i]); for(int i=1;i
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月16日 12时28分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
微信js-sdk使用简述(分享,扫码功能等)
2021-05-08
mxsrvs支持thinkphp3.2伪静态
2021-05-08
c++中ifstream及ofstream超详细说明
2021-05-08
vuex modules
2021-05-08
sleep、wait、yield、join——简介
2021-05-08
web项目配置
2021-05-08
基于单片机简易信号误差分析设计-全套资料
2021-05-08
基于单片机简易脉搏测量仪系统设计-毕设课设资料
2021-05-08
Javascript中String支持使用正则表达式的四种方法
2021-05-08
eclipse引用sun.misc开头的类
2021-05-08
Servlet2.5的增删改查功能分析与实现------删除功能(四)
2021-05-08
spring启动错误:Could not resolve placeholder
2021-05-08
查询某表格上次进行vacuum的时间
2021-05-08
invalid byte sequence for encoding
2021-05-08
redis向数组中添加值并查看数组长度
2021-05-08
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
2021-05-08
技术美术面试问题整理
2021-05-08
C++学习记录 五、C++提高编程(2)
2021-05-08
VUE3(八)setup与ref函数
2021-05-08
智能合约开发实践(1)
2021-05-08