P3373 树状数组1(树状数组//改点求段)

改点求段

复制代码
 1 #include<iostream>
 2 using namespace std;
 3 const int N=5e5+100;
 4 int n,m;
 5 int a[N];
 6 int c[N];
 7 int lowbit(int x)
 8 {
 9     return x&(-x);
10 }
11 void add(int x,int y)//将第x个数加上y
12 {
13     a[x]+=y;
14     for(int i=x;i<=n;i+=lowbit(i))
15     {
16         c[i]+=y;
17     }
18 }
19 int getsum(int x)//求[1,x]的和
20 {
21     int ans=0;
22     for(int i=x;i>0;i-=lowbit(i))
23     {
24         ans+=c[i];
25     }
26     return ans;
27 }
28 int main(void)
29 {
30     cin>>n>>m;
31     for(int i=1;i<=n;i++)
32     {
33         cin>>a[i];
34         add(i,a[i]);//给c数组赋初值
35     }
36     for(int i=1;i<=m;i++)
37     {
38         int t,x,y;
39         cin>>t>>x>>y;
40         if(t==1)
41         {
42             add(x,y);
43         }
44         else if(t==2)
45         {
46             int t1=getsum(x-1);
47             int t2=getsum(y);
48             cout<<t2-t1<<endl;
49         }
50     }
51     return 0;
52 }
复制代码

 

posted on   greenofyu  阅读(145)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示