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
myrocks fast load data
# Fast data load Load data相比普通insert效率更高,Load data批量插入数据有效减少了解析SQL的开销。MyRocks 同其他MySQL 引擎一样也支持Load data语法,同时MyRocks对data load也做了特殊优化。RocksDB引擎有一个规律是,**数据最终会存储在最底层SST文件中**,MyRocks通过参数rocksdb_bulk_
2281 0
1110. Complete Binary Tree (25)
#include #include #include #include using namespace std; struct node { int ad, l, r; }; vector visited(20, ...
998 0
Consistent Gets,Physical Reads和DB Block Gets的解释(转)
在Oracle的文档中有这样的解释: db block gets:Number of times a CURRENT block was requested. consistent gets:Number of times a consistent read was requested for a block.
1199 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等