当前位置:网站首页>AcWing 243. A simple integer problem 2 (tree array interval modification interval query)
AcWing 243. A simple integer problem 2 (tree array interval modification interval query)
2022-07-06 03:51:00 【Jacob* ̄▽ ̄*】


The question :

This problem requires the use of tree array Interval modification and Interval query .
Ideas :
stay Last question in , We maintain an original array with a tree array a The differential array of b, For every instruction “C l r d”, hold b[i] add d, And then b[r+1] subtract d.
What has been discussed is :b Of 1~x The prefix and b[1~x] After these instructions ,a[x] Increased value .
that a The prefix and of the sequence a[1~x] The overall value added is 
The above formula can be further rewritten into :

Derivation process :

Therefore, in this problem, we can consider adding a tree array , For maintenance i*b[i] And
, The above formula can be calculated directly .
To be specific , We build two tree arrays , Respectively c1, c2, Initially, all values are 0, For every instruction “C l r d”, Perform four operations :
- ①
c1OflPosition plusd. - ②
c1Ofr+1Position subtractiond. - ③
c2OflPosition plusl*d. - ④
c2Ofr+1Position subtraction(r+1)*d.
For every instruction “Q l r”, We can directly apply the formula derived above to calculate .
This problem brings us a kind of thought , Separate items that contain multiple variables , Make different variables in the formula independent of each other , This idea is very important .
Time complexity :
O(mlogn)
Code :
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5+10;
int n, m;
int a[N], c1[N], c2[N];
int read() {// Fast reading
int x=0,f=1; char c=getchar();
while(c<'0' || c>'9') {if(c=='-') f=-1; c=getchar();}
while(c>='0' && c<='9') {x=x*10+c-'0'; c=getchar();}
return x*f;
}
inline int lowbit(int x) {return x & (-x);}
int ask(int c[], int x)
{
int ans = 0;
while(x) {ans+=c[x], x-=lowbit(x);}
return ans;
}
int add(int x, int y, int c[])
{
for(; x<=n; x+=lowbit(x)) c[x]+=y;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;++i)
{
a[i] = read();
add(i, a[i]-a[i-1], c1), add(i, i*(a[i]-a[i-1]), c2);
}
while(m--)
{
char op[2];
int l, r, d;
scanf("%s", op);
l = read(), r = read();
if(*op=='C')
{
d = read();
add(l, d, c1), add(l, l*d, c2);
add(r+1, -d, c1), add(r+1, -(r+1)*d, c2);
}
else
{
printf("%lld\n", (r+1)*(ask(c1, r)) - ask(c2, r) - l*(ask(c1, l-1)) + ask(c2, l-1));
}
}
return 0;
}
边栏推荐
- 【按键消抖】基于FPGA的按键消抖模块开发
- The solution of permission denied (750 permissions should be used with caution)
- P7735-[noi2021] heavy and heavy edges [tree chain dissection, line segment tree]
- BUAA magpie nesting
- Introduction to data types in MySQL
- Remote Sensing Image Super-resolution and Object Detection: Benchmark and State of the Art
- MySQL reads missing data from a table in a continuous period of time
- 关于非虚函数的假派生
- Mathematical modeling regression analysis relationship between variables
- 2.2 STM32 GPIO操作
猜你喜欢

Facebook等大廠超十億用戶數據遭泄露,早該關注DID了
![[meisai] meisai thesis reference template](/img/14/b39e1db0b5b35702508068e028ee5a.jpg)
[meisai] meisai thesis reference template

RT-Thread--Lwip之FTP(2)

C mouse event and keyboard event of C (XXVIII)

No qualifying bean of type ‘......‘ available

JS music online playback plug-in vsplayaudio js

WPF effect Article 191 box selection listbox

2.2 STM32 GPIO operation

【可调延时网络】基于FPGA的可调延时网络系统verilog开发

如何修改表中的字段约束条件(类型,default, null等)
随机推荐
Custom event of C (31)
Containerization Foundation
2.2 fonctionnement stm32 GPIO
3.1 rtthread 串口设备(V1)详解
Remote Sensing Image Super-resolution and Object Detection: Benchmark and State of the Art
2.2 STM32 GPIO操作
在字节做测试5年,7月无情被辞,想给划水的兄弟提个醒
Ybtoj coloring plan [tree chain dissection, segment tree, tarjan]
[meisai] meisai thesis reference template
Flask learning and project practice 9: WTF form verification
Pytoch foundation - (2) mathematical operation of tensor
Facebook等大廠超十億用戶數據遭泄露,早該關注DID了
Error 1045 (28000): access denied for user 'root' @ 'localhost' (using password: no/yes
Shell pass parameters
Blue Bridge Cup - Castle formula
Pandora IOT development board learning (HAL Library) - Experiment 9 PWM output experiment (learning notes)
Thread sleep, thread sleep application scenarios
Multi project programming minimalist use case
2.1 rtthread pin设备详解
Mathematical modeling regression analysis relationship between variables