随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

树状数组

1. 求区间和

2. 单点赋值

 

还是单点改,通过维护一个a[ i ],来求改变值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  #include <iostream>
  #include <cstring>
  #include <sstream>
  using namespace std;
   const int  N=2e5+4;
  int n,a[N],c[N];
   
   int lowbit(int x){ return x&-x; }
 void set(int x,int v){
    int d=v-a[x];
    a[x]+=d;
    for(;x<=n;x+=lowbit(x)) c[x]+=d;
 }
 int qq(int x){
    int r=0;
    for(;x;x-=lowbit(x)) r+=c[x];
    return r;
 }
   
 int main(){
    int j=0;
    bool k=0;
    while(cin>>n){
        j++;
        memset(a,0,sizeof(a));
        memset(c,0,sizeof(c));
        if(n==0)return 0;
        if(k)cout<<'\n';
        k=1;
        cout<<"Case "<<j<<':'<<'\n';
        for(int i=1;i<=n;i++){
            int x;
            cin>>x;
            set(i,x);
        }
        string s;
        getline(cin,s);
        while(getline(cin,s)){
            stringstream ss(s);
            char str;
            int x,y;
            if(s=="END")break;
            else if(s[0]=='M'){
                ss>>str>>x>>y;
                cout<<qq(y)-qq(x-1)<<'\n';
            }else if(s[0]=='S'){
                ss>>str>>x>>y;
                set(x,y);
            }
        }
    }
}

 

posted on   towboat  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示