洛谷 3368 树状数组 模板2

模板2 区间修改,单点查询 

这里有两种模板,详情见代码

 

模板1:

 1 /*
 2  洛谷 3368 
 3  树状数组 模板 
 4  区间修改,单点求和 
 5 */ 
 6 
 7 #include <bits/stdc++.h>
 8 #define MAX 500010
 9 using namespace std;
10 int c[MAX];
11 int arr[MAX];
12 int n,m;
13 int lowbit(int x) { return x&(-x);
14 }
15 int query (int x)
16 {
17      int ans = 0;
18    for (int i=x;i<=n;i+=lowbit(i))
19       ans +=c[i];
20       return ans;
21 } 
22 void update(int x,int val)
23 {
24     for (int i=x;i>0;i-=lowbit(i))
25       c[i]+=val; 
26 }
27 
28 int main ()
29 {
30   int a,b,d,e;
31   memset(c,0,sizeof(c));
32   cin >>n>>m;
33   for (int i=1;i<=n;++i)
34     scanf("%d",&arr[i]);
35   for(int i=0;i<m;++i)
36    {
37         scanf("%d",&a);
38         if (1==a)
39            {
40             scanf("%d%d%d",&b,&d,&e); 
41             update(d,e);update(b-1,-e);
42            }
43         else
44         {
45              scanf ("%d",&b);
46              printf ("%d\n",query(b)+arr[b]) ;
47         }
48        
49     } 
50  return 0;
51 }

 

模板2:

 1 /*
 2  洛谷 3368 
 3  树状数组 模板 
 4  区间修改,单点求和 
 5 */ 
 6 // 模板 2  差分思想 
 7 #include <bits/stdc++.h>
 8 #define MAX 500010
 9 using namespace std;
10 int c[MAX];
11 int arr;
12 int n,m;
13 int lowbit(int x) { return x&(-x);
14 }
15 int query (int x)
16 {
17      int ans = 0;
18    for (int i=x;i;i-=lowbit(i))
19       ans +=c[i];
20       return ans;
21 } 
22 void update(int x,int val)
23 {
24     for (int i=x;i<=n;i+=lowbit(i))
25       c[i]+=val; 
26 }
27 
28 int main ()
29 {
30   int a,b,d,e;
31   memset(c,0,sizeof(c));
32   cin >>n>>m;
33   e = 0; 
34   for (int i=1;i<=n;++i)
35     {
36       scanf("%d",&arr);
37       update(i,arr-e); //差分输入 
38       e = arr;
39     } 
40   for(int i=0;i<m;++i)
41    {
42         scanf("%d",&a);
43         if (1==a)
44            {
45             scanf("%d%d%d",&b,&d,&e); 
46             update(b,e);update(d+1,-e);//这里这样更新 
47            }
48         else
49         {
50              scanf ("%d",&b);
51              printf ("%d\n",query(b)) ;
52         }
53        
54     } 
55  return 0;
56 }

 

posted @ 2018-03-28 21:00  雨落洛  阅读(152)  评论(0编辑  收藏  举报