【对询问分块】CODEVS1080 线段树练习
2015-03-11 07:14
363 查看
#include<cstdio> #include<cmath> using namespace std; #define N 100001 int sum ,a ,n,m,last,op ,Xs ,Ys ; int main() { scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); scanf("%d",&m); int sz=sqrt(m); if(!sz) sz=1; for(int i=1;i<=m;++i) { scanf("%d%d%d",&op[i],&Xs[i],&Ys[i]); if(i%sz==1||sz==1) { for(int j=last;j<i;++j) if(op[j]==1) a[Xs[j]]+=Ys[j]; for(int j=1;j<=n;++j) sum[j]=a[j]+sum[j-1]; last=i; } if(op[i]==2) { int ans=sum[Ys[i]]-sum[Xs[i]-1]; for(int j=last;j<i;++j) if(op[j]==1&&Xs[j]>=Xs[i]&&Xs[j]<=Ys[i]) ans+=Ys[j]; printf("%d\n",ans); } } return 0; }
相关文章推荐
- 形形色色的线段树练习——codevs线段树练习1-5:线段树,树状数组及分块模板
- 【CODEVS1080】线段树练习
- COdeVS——T 1082 线段树练习 3 (分块练习)
- 【CodeVS】1080 线段树练习 分块 线段树 树状数组 开放性
- 分块试水--CODEVS5037 线段树练习4加强版
- 分块试水--CODEVS4927 线段树练习5
- 分块、线段树练习
- 【Codevs1080】线段树练习
- [Codevs] 1081 线段树练习 2 ----“分块!”
- Codevs1080 线段树练习
- 【codevs1080】线段树练习1
- CodeVS 1080 线段树练习 分块 块状数组
- [CodeVS1080] 线段树练习(单点修改+求和)
- 线段树练习_codevs1080_树状数组
- AC日记——线段树练习三 codevs 1082 (分块尝试)
- 线段树练习_codevs1080_线段树
- [CodeVS1081]线段树练习2(区间修改+单点询问)
- codevs5037 线段树练习4加强版(暴力分块)
- [CodeVS1082] 线段树练习3(区间修改+询问区间和)
- poj 3264 小白算法练习 Balanced Lineup 线段树