首页 > 代码库 > HDU1166 敌兵布阵
HDU1166 敌兵布阵
题解:
树状数组PUIQ(点更新,段求和)裸题
代码:
#include<bits/stdc++.h>using namespace std;#define LL long long const int N=50010;int n;int a[N],c[N];char line[20];int lowbit(int x){return x&(-x);}void add(int x,int v){ int cnt=x; while(cnt<N){ c[cnt]+=v; cnt+=lowbit(cnt); }}int sum(int x){ int ans=0,cnt=x; while(cnt){ ans+=c[cnt]; cnt-=lowbit(cnt); } return ans;}int main(){ int T,Case=1,p,q; scanf("%d",&T); while(T--){ memset(c,0,sizeof(c)); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); add(i,a[i]); } printf("Case %d:\n",Case++); while(scanf("%s",line)&&line[0]!=‘E‘){ scanf("%d%d",&p,&q); if(line[0]==‘Q‘) printf("%d\n",sum(q)-sum(p-1)); if(line[0]==‘A‘) add(p,q); if(line[0]==‘S‘) add(p,0-q); } }}
HDU1166 敌兵布阵
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。