没事儿干,复习模板......

1.树状数组

本来不想写这个的,但是反正就几分钟就打完了,所以就写了,水AC数。

洛谷 P3374 [模板]树状数组 1

 1 #include<cstdio>
 2 
 3 typedef long long ll;
 4 int n,m;
 5 ll c[500005];
 6 
 7 int lb(int p)
 8 {
 9     return p&(-p);
10 }
11 
12 void add(int p,int v)
13 {
14     for(int i=p;i<=n;i+=lb(i))c[i]+=(ll)v;
15 }
16 
17 ll sum(int p)
18 {
19     ll ret=0;
20     for(int i=p;i;i-=lb(i))ret+=c[i];
21     return ret;
22 }
23 
24 int main()
25 {
26     scanf("%d%d",&n,&m);
27     for(int i=1;i<=n;i++)
28     {
29         int t;
30         scanf("%d",&t);
31         add(i,t);
32     }
33     for(int i=1;i<=m;i++)
34     {
35         int op,a,b;
36         scanf("%d%d%d",&op,&a,&b);
37         if(op==1)add(a,b);
38         if(op==2)printf("%lld\n",sum(b)-sum(a-1));
39     }
40     return 0;
41 }
树状数组

相关文章: