博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDUOJ 1166 敌兵布阵
阅读量:4347 次
发布时间:2019-06-07

本文共 1347 字,大约阅读时间需要 4 分钟。

发现自己之前对线段树 树状数组这种数据结构只会套套模板,根本就没有理解与运用。

所以打算最近开始重新学习这些数据结构。
那么这就是我的树状数组第一道练习题目:敌兵布阵
差不多就是模板题目

 

1 #include 
2 #include
3 #include
4 int T; 5 int n,x,y; 6 int bit[50005]; 7 char que[2333]; 8 int lowbit(int x){ 9 return x & -x;10 }11 int sum(int x){12 int ans=0;13 for(int i=x;i;i-=lowbit(i)) ans+=bit[i];14 return ans;15 }16 void add(int x,int y){17 for(int i=x;i<=n;i+=lowbit(i)){18 bit[i]+=y;19 }20 }21 int main(){22 scanf("%d",&T);23 for(int f=1;f<=T;f++){24 memset(bit,0,sizeof(bit));25 scanf("%d",&n);26 for(int i=1;i<=n;i++){27 scanf("%d",&x);28 add(i,x);29 }30 printf("Case %d:\n",f);31 while( scanf("%s",que) != EOF){32 if(que[0]=='E') break;33 else if(que[0]=='A'){34 scanf("%d%d",&x,&y);35 add(x,y);36 }37 else if(que[0]=='S'){38 scanf("%d%d",&x,&y);39 add(x,-y);40 //printf("FUCK\n");41 }42 else if(que[0]=='Q'){43 scanf("%d%d",&x,&y);44 printf("%d\n",sum(y)-sum(x-1));45 }46 } 47 } 48 return 0;49 }

 

转载于:https://www.cnblogs.com/OIerLYF/p/7496061.html

你可能感兴趣的文章
13-集体照
查看>>
读了曾国藩家书,,心态逐渐平和起来。搞技术的如果缺乏信念的指引,生活会很乏味无聊!...
查看>>
前端javascript 错误 Uncaught SyntaxError: Unexpected token ILLEGAL
查看>>
Selenium WebDriver问题--无法打开Chrome浏览器
查看>>
2017.4.18 Java的Integer与int互转
查看>>
小程序接受返回数组的坑
查看>>
echart.js的使用
查看>>
linux7.2系统中安装Nmon并使用
查看>>
HTML转换为PDF
查看>>
邮件加密和签名
查看>>
自己动手写一个单链表
查看>>
生产者与消费者(综合案例)
查看>>
集团信息化之路——关于网络电子採购系统的需求报告
查看>>
Android设计模式系列-单例模式
查看>>
hiho一下 第一百零七周 Give My Text Back(微软笔试题)
查看>>
常用正则表达式
查看>>
6.2.7 Math对象的使用
查看>>
Linux 添加PHP curl扩展
查看>>
[ES6] The Iterator Protocol
查看>>
[TypeScript] Generating Definition Files
查看>>