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

目录
相关文章
|
1月前
|
数据库 OceanBase
min restore scn of backup set file is greater than restore scn. can't use to restor
min restore scn of backup set file is greater than restore scn. can't use to restor
31 1
|
11月前
|
测试技术
pg_rewind实例--could not find previous WAL record at %X/%X
pg_rewind实例--could not find previous WAL record at %X/%X
65 0
|
存储 索引
UVA536 二叉树重建 Tree Recovery
UVA536 二叉树重建 Tree Recovery
|
SQL Oracle 关系型数据库
Online Data Files move
online data files move,move online,
1659 0
1110. Complete Binary Tree (25)
#include #include #include #include using namespace std; struct node { int ad, l, r; }; vector visited(20, ...
964 0
|
数据库 关系型数据库 Oracle
Data Guard Physical Standby Switchover
详解Data Guard Physical Standby Switchover相关内容。
1621 0