当前位置:网站首页>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;
}
边栏推荐
- Pytoch foundation - (1) initialization of tensors
- SAP ALV cell level set color
- Facebook等大廠超十億用戶數據遭泄露,早該關注DID了
- three. JS page background animation liquid JS special effect
- [001] [stm32] how to download STM32 original factory data
- Thread sleep, thread sleep application scenarios
- Remote Sensing Image Super-resolution and Object Detection: Benchmark and State of the Art
- MySQL about self growth
- Exchange bottles (graph theory + thinking)
- [slam] orb-slam3 parsing - track () (3)
猜你喜欢

3.1 rtthread 串口设备(V1)详解

自动化测试的好处

Teach you to build your own simple BP neural network with pytoch (take iris data set as an example)

Flask learning and project practice 9: WTF form verification

Proof of Stirling formula

After five years of testing in byte, I was ruthlessly dismissed in July, hoping to wake up my brother who was paddling

1、工程新建

ESP32_ FreeRTOS_ Arduino_ 1_ Create task

Schnuka: 3D vision detection application industry machine vision 3D detection

Error 1045 (28000): access denied for user 'root' @ 'localhost' (using password: no/yes
随机推荐
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
BUAA magpie nesting
Facebook and other large companies have leaked more than one billion user data, and it is time to pay attention to did
2.1 rtthread pin设备详解
KS003基于JSP和Servlet实现的商城系统
cookie,session,Token 这些你都知道吗?
mysql关于自增长增长问题
Ethernet port &arm & MOS &push-pull open drain &up and down &high and low sides &time domain and frequency domain Fourier
Pytoch foundation - (2) mathematical operation of tensor
[practice] mathematics in lottery
RT thread -- FTP of LwIP (2)
Esbuild & SWC: a new generation of construction tools
遥感图像超分辨重建综述
C (thirty) C combobox listview TreeView
潘多拉 IOT 开发板学习(HAL 库)—— 实验9 PWM输出实验(学习笔记)
Cf464e the classic problem [shortest path, chairman tree]
3.1 rtthread 串口设备(V1)详解
[American competition] mathematical terms
How to standardize the deployment of automated testing?
C mouse event and keyboard event of C (XXVIII)