n 寫一種資料結構,要求支援區間乘,區間加,區間求和
資料範圍:n,m
≤105
n,m\leq 10^5
n,m≤105so
luti
onsolution
soluti
on記住:每乙個乘操作都會影響和操作!每乙個乘操作都會影響和操作!每乙個乘操作都會影響和操作!
然後p us
hdow
npushdown
pushdo
wn的時候改一改就好了
時間複雜度:o((
n+m)
logn
)o((n+m)logn)
o((n+m
)log
n) cod
ecode
code
#include
#include
#include
#include
#define ll long long
#define n 100010
using
namespace std;
int n,mod,l,r,opt,m;
ll a[n]
,x;struct xds
inline
void
pushdown
(int k,
int l,
int r)
inline
void
modify_add
(int ql,
int qr,ll d,
int k=1,
int l=1,
int r=n)
inline
void
modify_mul
(int ql,
int qr,ll d,
int k=1,
int l=1,
int r=n)
inline ll query
(int ql,
int qr,
int k=1,
int l=1,
int r=n)
}t;inline ll read()
signed
main()
if(opt==2)
if(opt==3)
}}
P3373 模板 線段樹2
如題,已知乙個數列,你需要進行下面三種操作 1.將某區間每乙個數乘上x 2.將某區間每乙個數加上x 3.求出某區間每乙個數的和 include include using namespace std const int maxn 100005 int n,m,p long long arr maxn...
P3373 模板 線段樹 2
ac 這裡的延遲標記要開兩個,分別記錄加法的值和乘法的值,但是乘法和加法的優先順序不一樣,不規定他們的順序的話會有錯誤,所以可以規定乘法優先,即規定好該結點的值等於該節點的值 父節點的乘法延遲標記的值 父節點加法延遲標記的值 區間長度,即,sum num 2 sum num 2 add num wc...
P3373 模板 線段樹 2
題目描述 如題,已知乙個數列,你需要進行下面三種操作 1.將某區間每乙個數乘上x 2.將某區間每乙個數加上x 3.求出某區間每乙個數的和 輸入格式 第一行包含三個整數n m p,分別表示該數列數字的個數 操作的總個數和模數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來...