J 外掛程式 線段樹維護平方的區間和

2021-09-24 11:38:23 字數 2322 閱讀 3082

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 65536k,其他語言131072k

64bit io format: %lld

我的就是我的,你也是我的,記住了,狐狸!

——韓信-白龍吟

對於打賭輸了的小t會遭受到制裁,小s修改了資料庫使他可以派出許多軍隊來圍攻小t.

很不幸,小t與小s打賭打輸了,現在小t遭受著槍林彈雨與十面埋伏,因為小t是神所以他決定要扭轉局勢。

他要修改資料庫!

資料總庫的訊號牆有n個電極插頭,每個插頭有乙個訊號aiai,

小t可以使在區間[ l,r ][ l,r ]內的所有訊號加上乙個值k。

對於區間[ l,r ][ l,r ]的訊號強度有乙個計算公式:

我們定義

f(k)=ak×∑rj=k+1ajf(k)=ak×∑j=k+1raj

則訊號強度就為:

∑ri=lf(i)∑i=lrf(i)

你可以認為f(i)就是第i個插頭的訊號強度。

現在小t一會兒修改訊號值,一會兒詢問訊號強度,你是資料庫的管理員,為了不被小td,所以你要告訴他訊號強度是多少。

注:本系列題不按難度排序哦

第一行兩個整數n,q

第二行n個整數代表a

後q行代表操作:

一操作:1 l r x1 l r x代表區間[ l,r ][ l,r ]加x。

二操作:2 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 long範圍內(如果你不相信,可以寫高精)。

時空限制為標程的5倍,放心卡常。

100%  1≤n,q≤105100%  1≤n,q≤105

對於所有ai≤100ai≤100

不會寫看題解:

透過這道題 我學會了如何用線段數維護每一位的數的平方  的區間和。 也知道了如果是區間內任意兩個數相乘之和的答案是這樣求得。很不錯得一道題,學到了學到了。

#includeusing namespace std;

typedef long long ll;

const int n=1e5+10;

ll c1[n*4],c2[n*4],a[n],lazy[n*4];

int n,m;

void build(int id,int l,int r)

int mid=l+r>>1;

build(id<<1,l,mid);

build(id<<1|1,mid+1,r);

c1[id]=c1[id<<1]+c1[id<<1|1];

c2[id]=c2[id<<1]+c2[id<<1|1];

}void pushdown(int id,int l,int r)

}void up(int id,int l,int r,int ql,int qr,ll val)

pushdown(id,l,r);

int mid=l+r>>1;

if(ql<=mid) up(id<<1,l,mid,ql,qr,val);

if(qr>mid) up(id<<1|1,mid+1,r,ql,qr,val);

c1[id]=c1[id<<1]+c1[id<<1|1];

c2[id]=c2[id<<1]+c2[id<<1|1];

}ll qu(int id,int l,int r,int ql,int qr,int op)

pushdown(id,l,r);

ll ans=0;

int mid=l+r>>1;

if(ql<=mid) ans+=qu(id<<1,l,mid,ql,qr,op);

if(qr>mid) ans+=qu(id<<1|1,mid+1,r,ql,qr,op);

return ans;

}int main()

else}}

線段樹 (維護 區間平方和 Lazy標記)

外掛程式時間限制 c c 1秒,其他語言2秒 空間限制 c c 65536k,其他語言131072k 64bit io format lld 我的就是我的,你也是我的,記住了,狐狸!韓信 白龍吟 對於打賭輸了的小t會遭受到制裁,小s修改了資料庫使他可以派出許多軍隊來圍攻小t.很不幸,小t與小s打賭打...

線段樹維護區間加 乘 賦值 平方和 立方和

對於x點,有加法懶標記add和乘法懶標記mul,那麼可以以以下兩種方式維護元素的值 x x add mul 或者 x x mul add 可以證明先乘後加要比先加後乘容易維護 原來的乘 加法標記為 mul1 add1,後來要加上的乘 加法標記為 mul2 add2 x的值變為 x.dat x.dat...

線段樹維護區間01

g.小 w 開關燈 problem 4467 discussion description 晚上到家小 w 通過開關燈來保持自己神經的興奮以便清醒地理筆記。n n 2 n 100,000 2 n 100,000 盞燈被連續的編號為 1 n 1 n 剛回到家的時候,所有的燈都是關閉的。小w 通過 n ...