【HDU1166】敌兵布阵-单点修改和区间求和
来源:互联网 发布:盈利宝 知乎 编辑:程序博客网 时间:2024/06/11 10:57
题目大意:一个长为N的数列A,对它进行操作:1.Add/Sub i j:将Ai增加/减去j。2.Query i j:询问Ai+...+Aj的值。对于每个询问,给出正确的答案。
做法:一道入门题,用线段树和树状数组都能做,比较简单。
因为树状数组编程复杂度比较低,所以这里只贴树状数组的代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int T,n,c[50010]={0};char op[10]={0};int lowbit(int i){ return i&(-i);}void add(int x,int a){ for(int i=x;i<=n;i+=lowbit(i)) c[i]+=a;}int sum(int x){ int s=0; for(int i=x;i>0;i-=lowbit(i)) s+=c[i]; return s;}int query(int a,int b){ return sum(b)-sum(a-1);}int main(){ scanf("%d",&T); for(int t=1;t<=T;t++) { scanf("%d\n",&n);memset(c,0,sizeof(c));for(int i=1;i<=n;i++){ int a; scanf("%d",&a); if (i==n) scanf("\n"); add(i,a);}printf("Case %d:\n",t);scanf("%s",op);while(op[0]!='E'){ int a,b; scanf("%d %d\n",&a,&b); if (op[0]=='A') add(a,b); if (op[0]=='S') add(a,-b); if (op[0]=='Q') printf("%d\n",query(a,b)); scanf("%s",op);} } return 0;}
0 0
- 【HDU1166】敌兵布阵-单点修改和区间求和
- HDU1166 敌兵布阵 单点更新+区间求和
- hdu1166 敌兵布阵 线段树单点更新+区间求和
- hdu1166 敌兵布阵(线段树单点更新+区间求和)
- HDU1166:敌兵布阵(线段树单点修改)
- HDU1166 敌兵布阵(线段树单点更新,区间求和)(代码风格修正版)
- HDU1166 敌兵布阵 线段树区间求和||树状数组
- 线段树维护区间的和和单点更新-HDU1166-敌兵布阵
- 树状数组:HDU1166敌兵布阵 【单点更新,区间查询】
- hdu1166敌兵布阵(线段树---单点更新,区间求值)
- 【单点更新,区间查询,线段树】【HDU1166】【敌兵布阵】
- HDU1166 敌兵布阵(线段树 单点更新 区间查询)
- hdu1166 敌兵布阵 线段树 单点更新区间查询
- HDU1166 敌兵布阵(单点更新 区间查询)
- HDU1166:敌兵布阵(线段树单点更新,区间查询)
- hdu1166敌兵布阵 树状数组&线段树 单点更新求区间和
- hdu1166 敌兵布阵(单点更新)
- hdu1166--敌兵布阵(单点更新)
- Windows下测试算法在FDDB数据库的性能
- poj 1661
- javascript內容向上不間斷滾動
- 关于slice的一点思考
- 访问控制权限
- 【HDU1166】敌兵布阵-单点修改和区间求和
- 【CodeForces】348A - Mafia(二分 & 思维)
- BZOJ1003: [ZJOI2006]物流运输
- Java NIO使用及原理分析 (一)
- DS18B20显示温度并报警
- Java IO流(二)_day21
- 爬虫抓取
- Android优化-Zipalign
- Java 并发编程:核心理论