HDU 1166 树状数组
2015-08-07 20:43
337 查看
以前用线段树写的,编码复杂,效率也低。今天刚学习了树状数组,发现这道题可以用树状数组来写,而且时间也节省了一半,编码复杂度和空间复杂度就更不用说了。
![](http://img.blog.csdn.net/20150807205252645?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
#include<stdio.h> #include<string.h> #define lowbit(x) x&(-x) int a[50010],n; void add(int x,int d) { while(x<=n) { a[x]+=d; x+=lowbit(x); } } int q(int x) { int sum=0; for(int i=x;i;i-=lowbit(i)) sum+=a[i]; return sum; } int main() { int t,i,tmp,l,r,cas=0; char s[100]; scanf("%d",&t); while(t--) { printf("Case %d:\n",++cas); memset(a,0,sizeof(a)); scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&tmp); add(i,tmp); } getchar(); while(scanf("%s",s)!=EOF&&s[0]!='E') { scanf("%d%d",&l,&r); if(s[0]=='A') add(l,r); else if(s[0]=='S') add(l,-r); else printf("%d\n",q(r)-q(l-1)); } } return 0; }
相关文章推荐
- 杭电 1686 Oulipo (kmp)
- 四大组件之Activity小结
- 最锋利的VS Web开发工具扩展:Web Essentials详解
- js使用经验之谈
- 概念与原理
- HDOJ 1358 Period(KMP next数组运用)
- poj1113 Wall 凸包
- 将Visual Studio打造成为Node.js IDE
- 前端页面一些应用
- (转)概念与原理
- UITableView 表视图
- 11、C语言和设计模式(外观模式)
- Tarena - 运算符与表达式
- 关于List l1 = new LinkedList();报错:不兼容的类型的问题的解决
- 考研
- CodeForces 18C - Stripe 解题心得
- 关于XAMPP 无法启动mysql的解决方法
- 杭电 2047 阿牛的EOF牛肉串
- iOS开发_杂谈
- Subset sequence