当前位置:网站首页>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;
}
边栏推荐
- Flask learning and project practice 9: WTF form verification
- C#(三十)之C#comboBox ListView treeView
- Cf464e the classic problem [shortest path, chairman tree]
- Do you know cookies, sessions, tokens?
- Schnuka: 3D vision detection application industry machine vision 3D detection
- Edcircles: a real time circle detector with a false detection control translation
- Oracle ORA error message
- Schnuka: visual positioning system working principle of visual positioning system
- Mathematical modeling regression analysis relationship between variables
- 【可调延时网络】基于FPGA的可调延时网络系统verilog开发
猜你喜欢

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

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

cookie,session,Token 这些你都知道吗?

3.1 detailed explanation of rtthread serial port device (V1)

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

【PSO】基于PSO粒子群优化的物料点货物运输成本最低值计算matlab仿真,包括运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用

BUAA calculator (expression calculation - expression tree implementation)

2. GPIO related operations

RT-Thread--Lwip之FTP(2)

Blue Bridge Cup - Castle formula
随机推荐
Record the process of reverse task manager
ESP32_ FreeRTOS_ Arduino_ 1_ Create task
Containerization Foundation
2. GPIO related operations
Error 1045 (28000): access denied for user 'root' @ 'localhost' (using password: no/yes
3分钟带你了解微信小程序开发
ESP32(基于Arduino)连接EMQX的Mqtt服务器上传信息与命令控制
How to modify field constraints (type, default, null, etc.) in a table
1.16 - check code
C language -- structs, unions, enumerations, and custom types
自动化测试怎么规范部署?
Ethernet port &arm & MOS &push-pull open drain &up and down &high and low sides &time domain and frequency domain Fourier
[001] [stm32] how to download STM32 original factory data
2.1 rtthread pin device details
Ks008 SSM based press release system
Mapping between QoE and KQI
How do we make money in agriculture, rural areas and farmers? 100% for reference
Pytoch foundation - (1) initialization of tensors
SAP ALV cell level set color
施努卡:视觉定位系统 视觉定位系统的工作原理