hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
Color the ball
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8984 Accepted Submission(s): 4594
当N = 0,输入结束。
Update(a,1); Update(b+1,-1);
注意更新a的值就相当于更新区间[a,n]的值(n为限界/因为a要更新往后的所有区间的值),那么更新b+1的值就是更新[b+1,n](更新b往后所有区间的值)。
所以将区间[a,n]值+1,再将无关区间[b+1,n]的值-1,最后就是将区间[a,b]的值+1。
下面是第二类树状数组的实现的两种方式:
代码一(向上更新,向下求和):
1 #include <iostream> 2 using namespace std; 3 4 int n; //限界 5 int c[100010]; 6 7 int lowbit(int x) 8 { 9 return x&-x; 10 } 11 12 void Update(int x,int v) //更新区间[x,n]的值 13 { 14 while(x<=n){ 15 c[x]+=v; 16 x+=lowbit(x); 17 } 18 } 19 20 int Sum(int x) //求x之前的和 21 { 22 int sum = 0; 23 while(x>0){ 24 sum+=c[x]; 25 x-=lowbit(x); 26 } 27 return sum; 28 } 29 30 int main() 31 { 32 int a,b,i; 33 while(scanf("%d",&n)!=EOF){ 34 memset(c,0,sizeof(c)); 35 if(n==0) break; 36 for(i=0;i<n;i++){ 37 scanf("%d%d",&a,&b); 38 Update(a,1); //将区间[a,n]的值+1,再将无关区间[b+1,n]的值-1,即将区间[a,b]的值+1 39 Update(b+1,-1); 40 } 41 for(i=1;i<=n;i++){ 42 printf("%d",Sum(i)); //求单个的点直接求sum 43 if(i<n) 44 printf(" "); 45 } 46 printf("\n"); 47 } 48 return 0; 49 }
代码二(向下更新,向上求和):
1 #include <iostream> 2 using namespace std; 3 4 int n; //限界 5 int c[100010]; 6 7 int lowbit(int x) 8 { 9 return x&-x; 10 } 11 12 void Update(int x,int v) //更新区间[x,n]的值 13 { 14 while(x>0){ 15 c[x]+=v; 16 x-=lowbit(x); //改动,+变成了-,向下更新 17 } 18 } 19 20 int Sum(int x) //求x之前的和 21 { 22 int sum = 0; 23 while(x<=n){ 24 sum+=c[x]; 25 x+=lowbit(x); //改动,-变成了+,向上求和 26 } 27 return sum; 28 } 29 30 int main() 31 { 32 int a,b,i; 33 while(scanf("%d",&n)!=EOF){ 34 memset(c,0,sizeof(c)); 35 if(n==0) break; 36 for(i=0;i<n;i++){ 37 scanf("%d%d",&a,&b); 38 Update(a-1,-1); //将区间[1,a-1]的值-1,再将无关区间[1,b]的值+1,即将区间[a,b]的值+1 39 Update(b,1); 40 } 41 for(i=1;i<=n;i++){ 42 printf("%d",Sum(i)); //求单个的点直接求sum 43 if(i<n) 44 printf(" "); 45 } 46 printf("\n"); 47 } 48 return 0; 49 }
Freecode : www.cnblogs.com/yym2013
转载于:https://www.cnblogs.com/yym2013/p/3873835.html
hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)相关推荐
- UESTC 1601 艾尔大停电2 二维树状数组+区间更新
艾尔大停电2 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- Color the ball(树状数组区间更新+单点求值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Color the ball Time Limit: 9000/3000 MS (Java/Ot ...
- HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)
Attack Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Sub ...
- hdu3966 树链剖分点权模板+线段树区间更新/树状数组区间更新单点查询
点权树的模板题,另外发现树状数组也是可以区间更新的.. 注意在对链进行操作时方向不要搞错 线段树版本 #include<bits/stdc++.h> using namespace std ...
- hdu 4533(树状数组区间更新+单点查询)
题意:给你N个矩形,每个矩形给出左下角坐标,右上角坐标,有M个询问,每个询问给出一个时间t,问(0,0),(t,t)的范围内矩形的面积和(重叠的也算). 参考博客:http://blog.csdn.n ...
- HRBUST 1161 树状数组区间更新求和
Leyni Time Limit: 3000 MS Memory Limit: 65536 K Total Submit: 267(64 users) Total Accepted: 82(57 us ...
- HDU 1556 Color the ball
题解:基础的树状数组区间修改,单点查询. #include <cstdio> #include <cstring> int c[100005],a,b,n; int modif ...
- HDU - 5542 The Battle of Chibi(树状数组+DP)
UVA - 12983 The Battle of Chibi(树状数组+DP) HDU - 5542 The Battle of Chibi(树状数组+DP) #include<cstdio& ...
- 1097: 树状数组1(快速求和计算)
1097: [视频]树状数组1(快速求和计算) 时间限制: 3 Sec 内存限制: 128 MB 提交: 231 解决: 109 [提交][状态][讨论版] 题目描述 [题意] 给出n个数,并且初始化 ...
最新文章
- golang 随机数 math/rand包 crypto/rand包
- mysql 启动事件 启动触发器功能
- pert计算公式期望值_PERT和三点估算技术
- Windows 8系统平台上应用软件安装心得
- PostGIS之路——几何对象编辑(二)
- Semaphore1.8源码
- proxy_cache的使用
- USACO1.1.1 - PROB Your Ride Is Here
- 桌面支持--Auto Cad 2012安装方法
- 一图看懂经典面试题——左外连接,右外连接,内连接的区别
- Python 批量爬取猫咪图片实现千图成像
- [转贴][教学] 教你如何打飞机 ^_^
- 删除记录中的某个字段的值
- GB编码,汉字在编译器中数值
- python package 之 jenkins
- redis实现计时器
- org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version stri
- 万能进制转换器——栈应用
- 程序员如何靠卖源码和主题来赚钱
- 职场word使用技巧大全,后悔没学会这7个技巧
热门文章
- 带有输出参数的存储过程
- CVPR2021 用更好的目标检测器提取视觉特征!微软提出VinVL,基于更好的视觉特征,达到更强的多模态性能...
- OpenPCDet:点云3D目标检测开源库
- DeOccNet:国防科大提出阵列相机去除前景遮挡成像新方法
- 连续七天熬夜3D建模师终于出手,让老板增加薪资待遇,3D建模初学者的4个技巧
- 【Matplotlib】【Python】如何使用matplotlib绘制绘制随机生成的点--随机漫步详解
- 【Python】Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型
- docker镜像指定安装源_Docker快速安装以及换镜像源
- 简单粗暴入门JAVA之方法
- vscode beautify sass 格式化_最强编辑器 VSCode 系列之插件推荐【不定期更新】