Codeforces Round447 D树上前缀和
已知完全二叉树和每条边的权值,q次询问,每次给出sta起点和H。
w=(H-点到sta的权值),求w>0的所有w的加和。
这题用树上前缀和来写,e[i]记录子树上的点到点i的距离,sum[i][j]为e[i]的前缀和
这样每次找到满足大于h-len[i]的长度就行(二分查找)
- void init(){
- for(ll x=n;x>=;x--){
- e[x].push_back();
- ll lc=x<<;ll rc=x<<|;
- if(lc<=n){
- for(int i=;i<e[lc].size();i++){
- e[x].push_back(e[lc][i]+len[lc-]);
- }
- }
- if(rc<=n){
- for(int i=;i<e[rc].size();i++){
- e[x].push_back(e[rc][i]+len[rc-]);
- }
- }
- sort(e[x].begin(),e[x].end());
- sum[x].resize(e[x].size());
- for(int i=;i<e[x].size();i++){
- sum[x][i]=sum[x][i-]+e[x][i];
- }
- }
- }
- ll query(int x,ll h){
- if(h<=)return ;
- int index=upper_bound(e[x].begin(),e[x].end(),h)-e[x].begin();
- return index*h-sum[x][index-];
- }
- int main()
- {
- // freopen("in.txt","r",stdin);
- int m;
- scanf("%d%d",&n,&m);
- for(int i=;i<n;i++){
- scanf("%lld",&len[i]);
- }
- init();
- while(m--){
- ll a;
- ll h;
- ll pre=;
- scanf("%lld%lld",&a,&h);
- ll ans=;
- while(a&&h>){
- ans+=h;
- ll lc=a<<;
- ll rc=a<<|;
- if(lc!=pre&&lc<=n){
- ans+=query(lc, h-len[lc-]);
- }
- // cout<<ans<<"\n";
- if(rc!=pre&&rc<=n){
- ans+=query(rc, h-len[rc-]);
- }
- //cout<<ans<<"\n";
- h-=len[a-];
- pre=a;
- a/=;
- }
- printf("%lld\n",ans);
- }
- }
Codeforces Round447 D树上前缀和的更多相关文章
- Codeforces 986E - Prince's Problem(树上前缀和)
题面传送门 题意: 有一棵 \(n\) 个节点的树,点上有点权 \(a_i\),\(q\) 组询问,每次询问给出 \(u,v,w\),要求: \(\prod\limits_{x\in P(u,v)}\ ...
- BZOJ2783: [JLOI2012]树(树上前缀和+set)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1215 Solved: 768[Submit][Status][Discuss] Descriptio ...
- 「LuoguP2420」 让我们异或吧(树上前缀和
P2420 让我们异或吧-洛谷 题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor ...
- [Bzoj3631][JLOI2014]松鼠的新家 (树上前缀和)
3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2350 Solved: 1212[Submit][Sta ...
- Codeforces 919 行+列前缀和 树上记忆化搜索(树形DP)
A B C #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) ...
- Codeforces 1082C Multi-Subject Competition 前缀和 A
Codeforces 1082C Multi-Subject Competition https://vjudge.net/problem/CodeForces-1082C 题目: A multi-s ...
- Codeforces 578B "Or" Game (前缀和 + 贪心)
Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] 题目链接:B. "Or" Game You are given \(n\) ...
- NOIP2015运输计划(树上前缀和+LCA+二分)
Description 公元 2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球. 小 P 掌管 ...
- Kuro and Walking Route CodeForces - 979C (树上DFS)
Kuro is living in a country called Uberland, consisting of nn towns, numbered from 11to nn, and n−1n ...
随机推荐
- 通过示例学习rholang(下部:课程8-13)
课程8——状态通道和方法 保存数据 到现在为止,你已经很擅长于发送数据到元组空间和从元组空间中获取数据.但是无论你在什么时候进行计算,你有时需要把一些数据放在一边晚点才使用.几乎所有编程语言都有变量的 ...
- Nginx配置及负载均衡
转载:http://www.cnblogs.com/jingmoxukong/p/5945200.html nginx简易教程 目录 Nginx 概述 安装与使用 nginx 配置实战 参 ...
- 关于selenium自动化元素定位问题解决的几种方法
遇到了元素定位问题和定位到后无法执行点击操作等,闲话少说,直奔主题: 1.元素定位不到一般有如下3种情况,大家如果遇到了可以对号入座哈 a.查找的元素不在当前窗口中 解决方法:使用driver.swi ...
- STVP编译时遇到no default placement for segment .FLASH_CODE
最近编译STM8S003时需要使用flash库函数,看起来简单,实则折腾了超过1天.今天总结方法如下: 1.修改stm8s.h 156行 #define RAM_EXECUTION 注释去掉 如 ...
- [Java] The imoprt XXX cannot be resolved
不知道为什么突然报错,但是可以成功编译. 通过import一个未使用的包来消除error,猜测是插件的问题,具体原因未知. import 未使用的包后,error消失.
- Jquery 替换全部字符
item.replace('P','') 只会替换第一个'P'字符 item.replace(/P/gm,'') 替换全部'P'字符
- python sqlalchemy mysql 自动映射
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作 简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果 ...
- Nodejs实战系列:数据加密与crypto模块
博客地址:<NodeJS模块研究 - crypto> Github :https://github.com/dongyuanxin/blog nodejs 中的 crypto 模块提供了各 ...
- vuex之Mutation(三)
说明 既然我们可以取出数据,就可以修改数据,而修改数据并不是像修改data的数据一样,直接 this.xxx = xxx,这样有一个问题,在实际开发中,state的数据一般会多个组件共享,如果可以使用 ...
- 关于android 中WebView使用Css
demo private static final String linkCss = "<link rel=\"stylesheet\" href=\"f ...