外掛程式時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 65536k,其他語言131072k
64bit io format: %lld
我的就是我的,你也是我的,記住了,狐狸!
——韓信-白龍吟
對於打賭輸了的小t會遭受到制裁,小s修改了資料庫使他可以派出許多軍隊來圍攻小t.
很不幸,小t與小s打賭打輸了,現在小t遭受著槍林彈雨與十面埋伏,因為小t是神所以他決定要扭轉局勢。
他要修改資料庫!
資料總庫的訊號牆有n個電極插頭,每個插頭有乙個訊號aia_iai,
小t可以使在區間[ l,r ][\ l,r\ ][ l,r ]內的所有訊號加上乙個值k。
對於區間[ l,r ][\ l,r\ ][ l,r ]的訊號強度有乙個計算公式:
我們定義
f(k)=ak×∑j=k+1rajf(k)=a_k \times \sum_^r a_jf(k)=ak×∑j=k+1raj
則訊號強度就為:
∑i=lrf(i)\sum_^r f(i)∑i=lrf(i)
你可以認為f(i)就是第i個插頭的訊號強度。
現在小t一會兒修改訊號值,一會兒詢問訊號強度,你是資料庫的管理員,為了不被小td,所以你要告訴他訊號強度是多少。
注:本系列題不按難度排序哦
第一行兩個整數n,q
第二行n個整數代表a
後q行代表操作:
一操作:1 l r x1\ l\ r\ x1 l r x代表區間[ l,r ][\ l,r\ ][ l,r ]加x。
二操作:2 l r2\ l\ r2 l r代表區間詢問。
每一行乙個數字,表示對於乙個二操作的答案。
示例1
複製
5 2
1 2 3 4 5
1 1 2 1
2 1 2
複製
6
樣例解釋:1 1 2 1使a[1]~a[2]的值每個都加了1, 即a[1]=2, a[2]=3,所以2 1 2=a[1]*a[2]=2*3=6
保證所有二操作的答案都是在long longlong\ longlong long範圍內(如果你不相信,可以寫高精)。
時空限制為標程的5倍,放心卡常。
100% 1≤n,q≤105100 \% \ \ 1 \le n,q \le 10^5100% 1≤n,q≤105
對於所有ai≤100a_i \le 100ai≤100
//tree區間和 qtree區間平方和
ll a[100005];
int n,q;
void pushdown(int o,int l,int r)
void up(int o,int l,int r,int ql,int qr,ll v)
pushdown(o,l,r);//下傳
if(ql<=mid) up(ls,l,mid,ql,qr,v);
if(mid
線段樹維護區間加 乘 賦值 平方和 立方和
對於x點,有加法懶標記add和乘法懶標記mul,那麼可以以以下兩種方式維護元素的值 x x add mul 或者 x x mul add 可以證明先乘後加要比先加後乘容易維護 原來的乘 加法標記為 mul1 add1,後來要加上的乘 加法標記為 mul2 add2 x的值變為 x.dat x.dat...
J 外掛程式 線段樹維護平方的區間和
時間限制 c c 1秒,其他語言2秒 空間限制 c c 65536k,其他語言131072k 64bit io format lld 我的就是我的,你也是我的,記住了,狐狸!韓信 白龍吟 對於打賭輸了的小t會遭受到制裁,小s修改了資料庫使他可以派出許多軍隊來圍攻小t.很不幸,小t與小s打賭打輸了,現...
線段樹加乘操作 求區間和和平方和
搞了整整一晚上加一下午 應該是懂了 加乘區間和別人的題解清晰易懂 這裡 平方和題目鏈結 注意 2.傳參的時候要清楚要傳的到底是什麼pushdown 1,l,r 找了很久 3.query的時候也要pushdown 因為只有這樣才能讓兒子進行完整的計算 include include define ll...