HDU4578(多種求值更新操作)

2021-08-28 20:17:48 字數 689 閱讀 4926

1.設定兩個標記add和mul;初值add=0,mul=1;

2.增加操作:tree[rt].sum[0]+=(r-l+1)*add

下面分析sum[1](二次方增加的原理):

由平方公式得:(a+b)^2=a^2+2*a*b+b^2;tree[rt].sum[1]+=add*add*(r-l+1)+2*add*tree[rt].sum[0];

再分析sum[2](三次方增加的原理):

(a+b)^3=a^3+3*a^2*b+3*a*b^2+b^3

因此:tree[rt].sum[2]+=3*add*tree[rt].sum[1]+3*add*add*tree[rt].sum[0]+(r-l+1)*add*add*add;

3.乘法操作:

tree[rt].sum[0]*=mul

tree[rt].sum[1]*=mul*mul

tree[rt].sum[2]*=mul*mul*mul

4.標記的更改:

(a*d+p)*d等價於d*=d;p*=d

5.對於(k*a+b);

一次方:k*a+b=k*a+(r-l+1)*b;

二次方:(k*a+b)^2=k*k*a*a+2*k*a*b+(r-l+1)b*b;

三次方:(k*a+b)^3=k*k*k*a*a*a+3*k*k*a*a*b+3*k*a*b*b+(r-l+1)b*b*b

hdu4578 (多標記線段樹)

對於乙個區間有4個操作 1.將a b都加上c 2.將a b都乘上c 3.將a b都變成c 4.查詢a b的每個數的p次方的和。p 1,2,3 平方和這樣來推 a c 2 a 2 2ac c 2 即 sum2 rt sum2 rt 2 sum1 rt c r l 1 c c 立方和這樣推 a c 3 ...

HDU 4578 線段樹各種區間操作

原題鏈結 題意 初始乙個長度為n的陣列全為0,有m個操作,輸入op,l,r,x。op 1時,把 l,r 中的所有數加上x op 2時,把 l,r 中的所有樹乘上x op 3時,把 l,r 中的所有數全置為x op 4時,輸出 l,r 中所有數的 x 方的和 思路 令 x a x b 即對乙個x,令他...

線段樹懶標記好題 HDU4578

1 1 x y c 代表 把區間 x,y 上的值全部加c 2 2 x y c 代表 把區間 x,y 上的值全部乘以c 3 3 x y c 代表 把區間 x,y 上的值全部賦值為c 4 4 x y p 代表 求區間 x,y 上值的p次方和1 p 3 維護sum1,sum2,sum3分別為一次方 二次方...