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;
}

目录
相关文章
|
3月前
crash命令 —— tree
crash命令 —— tree
|
7月前
|
存储 数据库 索引
LSM(Log-Structured Merge-tree
在数据库领域,LSM(Log-Structured Merge-tree)是一种非常高效的数据存储方式。它通过将数据分层存储,并使用跳表(SkipList)等数据结构,实现了快速的数据查找和更新。
134 1
|
7月前
|
存储 监控 分布式数据库
Algorithms_LSM树(Log-Structured Merge Tree)
Algorithms_LSM树(Log-Structured Merge Tree)
172 0
|
测试技术
pg_rewind实例--could not find previous WAL record at %X/%X
pg_rewind实例--could not find previous WAL record at %X/%X
127 0
|
机器学习/深度学习
Data Structures (五) - 二叉树Binary Tree
Data Structures (五) - 二叉树Binary Tree
Data Structures (五) - 二叉树Binary Tree
|
存储 索引
UVA536 二叉树重建 Tree Recovery
UVA536 二叉树重建 Tree Recovery
1110. Complete Binary Tree (25)
#include #include #include #include using namespace std; struct node { int ad, l, r; }; vector visited(20, ...
988 0