Tree Recovery

简介: Tree Recovery

Tree Recovery


题目:


You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the sum of numbers in a given interval.


输入描述:


The first line contains two numbers N and Q. 1 ≤ N,Q ≤ 100000.

The second line contains N numbers, the initial values of A1, A2, ... , AN. -1000000000 ≤ Ai ≤ 1000000000.

Each of the next Q lines represents an operation.

"C a b c" means adding c to each of Aa, Aa+1, ... , Ab. -10000 ≤ c ≤ 10000.

"Q a b" means querying the sum of Aa, Aa+1, ... , Ab.


输出描述:


You need to answer all Q commands in order. One answer in a line.


示例1


输入


10 5

1 2 3 4 5 6 7 8 9 10

Q 4 4

Q 1 10

Q 2 4

C 3 6 3

Q 2 4


输出


4

55

9

15


思路:和上篇差不多,一个经典树状数组稍微变形


#include<bits/stdc++.h>
using namespace std;
long long n,q;
int a[101010];
long long lowbit(long long x)
{
    return x&-x;
}
void add(long long i,long long x)
{
    while(i<=n)
    {
        a[i]+=x;
        i+=lowbit(i);
    }
}
long long sum(long long i)
{
    long long ans=0;
    while(i>0)
    {
        ans+=a[i];
        i-=lowbit(i);
    }
    return ans;
}
int main()
{
    cin>>n>>q;
    long long x,a,b,c;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        add(i,x);
    }
    string s;
    while(q--)
    {
        cin>>s;
        if(s=="Q"){
            cin>>a>>b;
            cout<<sum(b)-sum(a-1)<<endl;
        }
        else{
            cin>>a>>b>>c;
            for(int i=a;i<=b;i++)
            add(i,c);
        }
    }
    return 0;
}

joesx
+关注
目录
打赏
0
0
0
0
0
分享
相关文章
LSM(Log-Structured Merge-tree
在数据库领域,LSM(Log-Structured Merge-tree)是一种非常高效的数据存储方式。它通过将数据分层存储,并使用跳表(SkipList)等数据结构,实现了快速的数据查找和更新。
152 1
Algorithms_LSM树(Log-Structured Merge Tree)
Algorithms_LSM树(Log-Structured Merge Tree)
228 0
Ext4 Fast Commit
# 概述 Fast Commit 是 Linux 5.10 引入的一个新的轻量级日志方案,根据 ATC-17 的论文 “iJournaling: Fine-Grained Journaling for Improving the Latency of Fsync System Call” 实现。 在我们常用的 ext4 data=ordered 日志模式下,fsync() 系统调用会因为无关 IO
1235 0
1110. Complete Binary Tree (25)
#include #include #include #include using namespace std; struct node { int ad, l, r; }; vector visited(20, ...
998 0
Data Guard Physical Standby Switchover
详解Data Guard Physical Standby Switchover相关内容。
1650 0