hdu 1166 敌兵布阵
来源:互联网 发布:中国汽车历年进口数据 编辑:程序博客网 时间:2024/04/28 22:36
大意就不说了。中文题目。除非你是外星人。拉倒吧,你肯定不是
线段树的单点更新。query求的是一段内的SUM
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 50005using namespace std;int tree[MAXN<<2];void build(int num,int l,int r){ tree[num]=0; if(l==r)return; int mid=(l+r)>>1; build(num<<1,l,mid); build(num<<1|1,mid+1,r);}void insert(int num,int s,int e,int pos,int val){ int mid=(s+e)>>1; if(s==e) { tree[num]+=val; return; } if(pos<=mid) insert(num<<1,s,mid,pos,val); else insert(num<<1|1,mid+1,e,pos,val); tree[num]=tree[num<<1] + tree[num<<1|1];}int query(int num,int s,int e,int l,int r){ int mid=(s+e)>>1; if(s==l && r==e)return tree[num]; if(r<=mid) return query(num<<1,s,mid,l,r); else { if(l>mid) return query(num<<1|1,mid+1,e,l,r); else return query(num<<1,s,mid,l,mid) + query(num<<1|1,mid+1,e,mid+1,r); }}int main(){ int T; int CASE=1; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); build(1,1,n); for(int i=1;i<=n;i++) { int t; scanf("%d",&t); insert(1,1,n,i,t); } char str[10]; printf("Case %d:\n",CASE++); while(~scanf("%s",str)) { if(str[0]=='E')break; int a,b; scanf("%d%d",&a,&b); switch(str[0]){ case 'A':insert(1,1,n,a,b);break; case 'S':insert(1,1,n,a,-b);break; case 'Q': { printf("%d\n",query(1,1,n,a,b)); break; } } } }}
树状数组也来一发
#include <iostream>#include <cstdio>using namespace std;int n,C[50005],A[50005];inline int lowbit(int x){ return x&-x;}void SZinit(){ for(int i=1;i<=n;i++) { scanf("%d",&A[i]); C[i]=0; } for(int i=1;i<=n;i++) { for(int j=i-lowbit(i)+1;j<=i;j++) C[i]+=A[j]; }}int sum(int x){ int ret=0; while(x>0) { ret+=C[x]; x-=lowbit(x); } return ret;}void add(int x,int d){ while(x<=n) { C[x]+=d; x+=lowbit(x); }}int main(){ int T; scanf("%d",&T); for(int cas=1;cas<=T;cas++) { scanf("%d",&n); SZinit(); char op[20]; printf("Case %d:\n",cas); while(scanf("%s",op)!=EOF) { if(op[0]=='E')break; else if(op[0]=='Q') { int l,r; scanf("%d%d",&l,&r); printf("%d\n",sum(r)-sum(l-1)); } else if(op[0]=='A') { int l,r; scanf("%d%d",&l,&r); add(l,r); } else if(op[0]=='S') { int l,r; scanf("%d%d",&l,&r); add(l,-r); } } } return 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 敌兵布阵
- 必须添加对程序集“System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。
- C语言--配置文件解析
- apache在linux下的重启方式
- java常用集合类详解(有例子,集合类糊涂的来看!)
- Spring Batch Concepts(2)
- hdu 1166 敌兵布阵
- 一些有用的SAP技术TCODE
- 在for循环中多次用CBrush画笔导致的崩溃
- ABAP--关于OO ABAP的学习资料连接列表
- Nginx+PHP-FPM的域Socket配置方法
- Glibc错误恢复
- 字符串子串的个数
- abap--关于sap地址,传真,邮箱的地址读取
- poj-2478 求前n个欧拉函数值的总数(模板)。