[ACM_数据结构] Color the ball [线段树水题][数组开大]
Description
Input
Output
Sample Input
Sample Output
1 #include<cmath> 2 #include<cstdio> 3 #define maxn 300000 4 class Node{ 5 public: 6 int l,r; 7 __int64 add;//附加值 8 __int64 sum; 9 }node[maxn]; 10 int getRight(int n){//获得满足2^x>=n的最小x[从0层开始,给编号获得层数] 11 return ceil(log10(n*1.0)/log10(2.0)); 12 } 13 void build(int l,int r,int num){//输入区间[1,2^getRight(n)],num=1建树 14 if(l==r){ 15 node[num].l=node[num].r=l;node[num].add=0;node[num].sum=0; 16 return; 17 } 18 node[num].l=l;node[num].r=r;node[num].add=0;node[num].sum=0; 19 build(l,(l+r)/2,num*2); 20 build((l+r)/2+1,r,num*2+1); 21 } 22 void add(int o,int l,int r,__int64 v){//从o节点开始递归[只要调用时o=1即可]在区间[l,r]全部加v 23 if(l<=node[o].l && r>=node[o].r){//全覆盖[递归边界] 24 node[o].add+=v; 25 }else{ 26 int M=node[o].l+(node[o].r-node[o].l)/2; 27 if(r<=M)add(o*2,l,r,v); 28 else if(l>M)add(o*2+1,l,r,v); 29 else{ 30 add(o*2,l,M,v); 31 add(o*2+1,M+1,r,v); 32 } 33 } 34 //维护节点o 35 if(node[o].l!=node[o].r){//如果区间只是一个元素就不算 36 node[o].sum=node[2*o].sum+node[2*o+1].sum; 37 }else node[o].sum=0; 38 node[o].sum+=node[o].add*(node[o].r-node[o].l+1); 39 } 40 41 //这里addadd是从上往下这条路的累计addadd值[一同回溯记录这条路节点所有add之和,减少了一次回溯累加add值] 42 //初始时直接令其为0 43 __int64 sum=0; 44 void ask(int o,int l,int r,__int64 addadd){//从o节点开始递归[只要调用时o=1即可]在区间[l,r]的和 45 if(l<=node[o].l && r>=node[o].r){//全覆盖[递归边界] 46 sum+=(node[o].sum+addadd*(node[o].r-node[o].l+1)); 47 }else{ 48 int M=node[o].l+(node[o].r-node[o].l)/2; 49 if(r<=M)ask(o*2,l,r,node[o].add+addadd); 50 else if(l>M)ask(o*2+1,l,r,node[o].add+addadd); 51 else{ 52 ask(o*2,l,M,node[o].add+addadd); 53 ask(o*2+1,M+1,r,node[o].add+addadd); 54 } 55 } 56 } 57 int main(){ 58 int N; 59 int i,j; 60 while(scanf("%d",&N) && N){ 61 build(1,1<<getRight(N),1); 62 for(int k=0;k<N;k++){ 63 scanf("%d%d",&i,&j); 64 add(1,i,j,1); 65 } 66 sum=0; 67 ask(1,1,1,0); 68 printf("%lld",sum); 69 for(i=2;i<=N;i++){ 70 sum=0; 71 ask(1,i,i,0); 72 printf(" %lld",sum); 73 } 74 printf("\n"); 75 }return 0; 76 }
[ACM_数据结构] Color the ball [线段树水题][数组开大]相关推荐
- HDU 1556 Color the Ball 线段树 题解
本题使用线段树自然能够,由于区间的问题. 这里比較难想的就是: 1 最后更新须要查询全部叶子节点的值,故此须要使用O(nlgn)时间效率更新全部点. 2 截取区间不能有半点差错.否则答案错误. 这两点 ...
- 玲珑杯 1164 - 战舰萝莉 线段树水题
点击打开链接 DESCRIPTION 在大战之后,法力浮·鳝AK迅速驾船驶向北海.当然他知道水之灵不可能那么容易得到,正如爱迪生曾说过:"要把BOSS打倒就要准备足够的等级."所以 ...
- HDU-1556-Color the ball (线段树和差分数组两种解法)
N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一 ...
- hdu 1556 Color the ball 线段树 区间更新
水一下 #include <bits/stdc++.h> #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 ...
- hdu1305 字典树水题
题意: 给你一些字符串,然后问你他们中有没有一个串是另一个串的前缀. 思路: 字典树水题,(这种水题如果数据不大(这个题目不知道大不大,题目没说估计不大),hash下也行,把每个 ...
- 线段树模板题3:区间染色问题
1.3线段树模板题3:区间染色问题 在DotA游戏中,帕吉的肉钩实际上是大多数英雄中最恐怖的东西.挂钩由长度相同的几个连续的金属棍组成. 现在,帕吉(Pudge)希望对挂接进行一些操作. 让我们将钩子 ...
- J.哭泣的阿木木(线段树模板题)
哭泣的阿木木 Description 没啥用的背景故事: 在远古的恕瑞玛,有一个孤独而又忧郁的灵魂,阿木木.他在世间游荡,只为找到一个朋友.他遭受了一种远古的巫术诅咒,注定忍受永世的孤单,因为被他触碰 ...
- UVA 12086 Potentiometers(线段树裸题)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- Color the ball(树状数组区间更新+单点求值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Color the ball Time Limit: 9000/3000 MS (Java/Ot ...
最新文章
- 配置网口相机(大恒水星相机)
- 编写实现atoi函数
- framework7 1.3.5 路由跳转后DOM失效问题
- 【渝粤教育】广东开放大学 网络市场与预测 形成性考核 (23)
- python matplotlib画散点图_python matplotlib库绘制散点图例题解析
- 操作系统和Linux
- linux 列出当前视频设备,如何获取Linux(ubuntu)上的视频捕获设备(网络摄像机)列表?(C / C ++)...
- Python爬虫 --- 2.2 Scrapy 选择器的介绍
- poj - problem 3070 Fibonacci 【矩阵 +快速幂】
- vn.py开源量化交易程序开发框架
- 微信秘笈之--微信多开
- 【基于机器视觉与深度学习的人机对弈机器人——决策篇】
- appstore上架所需截屏的制作方法
- session是什么 PHP使用session
- replicate vs duplicate
- Supporting Online Material for Lab Experiments for the Study of Social-Ecological Systems
- CGB2106-Day03
- 【Google Earth Studio】进阶编辑技巧
- 【坑点】Intellij Idea 出现“Unable to parse template”问题
- FLASH--M25P40/M25P10
热门文章
- openwrt 设置samba服务器与pc共享文件
- C语言笔记(数组地址一些细节)
- xcode调试打印QString
- 如何提高VS2010的性能,VS2010不再…
- SQLite 3.7.13的加密解密(二)—— 开放宏定义
- webkit-box translate 的组合--流畅的滑动体验
- android用户界面-事件处理
- 大数据_Flink_流式处理_简介_为什么要用Flink---Flink工作笔记0002
- 自己关于pytorch transfomers 的一个误区
- 屏幕监控中捕获鼠标位置信息