HDU1166敌兵布阵线段树入门

Posted ac-ac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU1166敌兵布阵线段树入门相关的知识,希望对你有一定的参考价值。

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 const int maxn = 50010;
 6 int sum[maxn];
 7 int t,n;
 8 void update(int pos,int val)
 9 {
10     while(pos<=n)
11     {
12         sum[pos] += val;
13         pos += (pos&(-pos));
14     }
15 }
16 int Query(int pos)
17 {
18     int rec = 0;
19     while(pos > 0)
20     {
21         rec += sum[pos];
22         pos -= (pos&(-pos));
23     }
24     return rec;
25 } 
26 int main(void)
27 {
28     int x;
29     scanf("%d",&t);
30     int kase = 0;
31     while(t--)
32     {
33         memset(sum,0,sizeof(sum));
34         cin>>n;
35         for(int i = 1; i <= n; i++)
36         {
37             cin>>x;
38             update(i,x);
39         }
40         char s[10];
41         printf("Case %d:
",++kase);
42         while(scanf("%s",s))
43         {
44             if(s[0]==E)
45                 break;
46             if(s[0]==A)
47             {
48                 int i,j;
49                 cin>>i>>j;
50                 update(i,j);
51             }
52             else if(s[0]==S)
53             {
54                 int i,j;
55                 cin>>i>>j;
56                 update(i,-j);
57             }
58             else
59             {
60                 int i,j;
61                 cin>>i>>j;
62                 cout<<Query(j)-Query(i-1)<<endl;
63             }
64         }
65     }
66     return 0;
67 }

 

以上是关于HDU1166敌兵布阵线段树入门的主要内容,如果未能解决你的问题,请参考以下文章

HDU-1166 敌兵布阵 (线段树&&树状数组入门)

HDU 1166 敌兵布阵 线段树单点更新求和

hdu1166 敌兵布阵 树状数组/线段树

HDU 1166 敌兵布阵(线段树)

hdu1166-敌兵布阵 线段树(对点操作)

线段树I:母题hdu 1166 敌兵布阵