hdu 1166 敌兵布阵
来源:互联网 发布:是故教然后知困 编辑:程序博客网 时间:2024/05/16 07:33
树状数组:
#include<stdio.h>#include<string.h>using namespace std;int n,a[500010];char sh[500];int lowbit(int i){return i&(-i);}int sum(int i){int sum=0;while(i>0){sum+=a[i];i-=lowbit(i);}return sum;}void update(int i,int val){while(i<=n){a[i]+=val;i+=lowbit(i);}}int main(){int val,m,i,j,k,x,y,t,z=1;scanf("%d",&t);while(t--){memset(a,0,sizeof(a));scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&val);update(i,val);}printf("Case %d:\n",z++);while(scanf("%s",sh)!=EOF){if(sh[0]=='E') break;scanf("%d %d",&x,&y);if(sh[0]=='A') update(x,y);else if(sh[0]=='S') update(x,-y);else printf("%d\n",sum(y)-sum(x-1));}}return 0;}
线段树:
#include<stdio.h>#include<string.h>using namespace std;struct Tree{int l,r,mid;int sum;}tree[150010];char commend[30];int ai[50020];void build(int i,int a,int b){tree[i].l=a;tree[i].r=b;tree[i].mid=(a+b)/2;tree[i].sum=0;if(a==b)tree[i].sum=ai[a];else{build(2*i,a,(a+b)/2);build(2*i+1,(a+b)/2+1,b);tree[i].sum=tree[2*i].sum+tree[2*i+1].sum;}}void update(int i,int a,int b,int c){if(a==tree[i].l&&b==tree[i].r){tree[i].sum+=c;return;}if(b<=tree[i].mid) update(2*i,a,b,c); else if(tree[i].mid<a) update(2*i+1,a,b,c); else { update(2*i,a,tree[i].mid,c); update(2*i+1,tree[i].mid+1,b,c); } tree[i].sum=tree[2*i].sum+tree[2*i+1].sum;}int query(int i,int a,int b){if(a<=tree[i].l&&tree[i].r<=b)return tree[i].sum;if(b<=tree[i].mid)return query(2*i,a,b);else if(tree[i].mid<a)return query(2*i+1,a,b);else return query(2*i,a,tree[i].mid)+query(2*i+1,tree[i].mid+1,b);}int main(){int t,n,m,i,j,k,a,b,c,z=1;scanf("%d",&t);while(t--){scanf("%d",&n);printf("Case %d:\n",z++);for(i=1;i<=n;i++){scanf("%d",&ai[i]);}build(1,1,n);while(scanf("%s",commend)!=EOF){if(commend[0]=='E') break;else if(commend[0]=='A'){scanf("%d%d",&a,&c);update(1,a,a,c);}else if(commend[0]=='S'){scanf("%d%d",&a,&c);update(1,a,a,-c);}else if(commend[0]=='Q'){scanf("%d%d",&a,&b);printf("%d\n",query(1,a,b));}}}return 0;}
0 0
- HDU 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- HDU 1166 - 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- Python类的专用方法
- 6个错误的设计可能杀死你的APP
- Cocostudio控件
- 八大排序算法
- ArcGIS for Flex中map控件属性
- hdu 1166 敌兵布阵
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)
- jdbc----mysql的select、insert、update、delete 基本语句
- BZOJ 1070: [SCOI2007]修车
- 一次性添加多个组件
- NPOI,将Excel表的数据存放到DataTable中
- HTML5开发桌面应用:选择node-webkit还是有道heX
- git初始化之git config
- hadoop2.2.0 centos 编译安装详解