树状数组区间修改单点查询模板

 #include<cstdio> #include<iostream> using namespace std; int a[100005],b[100005]; int lowbit(int x) { return x&(-x); } int n; void add(int x,int y) { for(int i=x;i<=n;i+=lowbit(i)) { b[i]+=y; } } int sum(int x) { int ans=0; for(int i=x;i;i-=lowbit(i)) { ans+=b[i]; } return ans; } int main() { freopen("shulieb.in","r",stdin); freopen("shulieb.out","w",stdout); int m; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); //add(i,a[i]); } scanf("%d",&m); int x,y,k; for(int i=1;i<=m;i++) { char s[10]; scanf("%s",s); if(s[0]=='A') { scanf("%d%d%d",&x,&y,&k); add(x,k); add(y+1,-k); } else if(s[0]=='Q') { scanf("%d",&x); printf("%d\n",sum(x)+a[x]); } } return 0; } 
全部评论

相关推荐

大佬们,在大厂实习的都是几百一天???
爱睡觉的冰箱哥:实习工资这个不都是公开的吗,a不了,字节400,快手350,有些有房补餐补这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务