首页 > 代码库 > hdu 1166 敌兵布阵
hdu 1166 敌兵布阵
敌兵布阵
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 42907 Accepted Submission(s): 18153
一个裸树状数组直接套模板
#include<iostream> #include<cstdio> #include<cstring> #define M 100005 using namespace std; int a[M],n; int lowbit(int i) { return i&(-i); } void add(int i,int x) { while(i<=n) { a[i]+=x; i+=lowbit(i); } } int sum(int i) { int ans=0; while(i>0) { ans+=a[i]; i-=lowbit(i); } return ans; } int main() { int i,cas,t; scanf("%d",&cas); t=1; while(cas--) { memset(a,0,sizeof a); scanf("%d",&n); int b; for(i=1;i<=n;i++) { scanf("%d",&b); add(i,b); } printf("Case %d:\n",t); t++; while(1) { int s,e; char str[10]; scanf("%s",str); if(str[0]=='E') break; scanf("%d%d",&s,&e); if(str[0]=='Q') { printf("%d\n",sum(e)-sum(s-1)); } else if(str[0]=='A') { add(s,e); } else if(str[0]=='S') { add(s,-e); } } } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。