loj 6280 數列分塊入門 4

2022-08-01 17:18:09 字數 782 閱讀 7072

題目:傳送門

簡要題意:

給出乙個長為 n的數列,以及 n個操作,操作涉及區間加法,區間求和。

題解:第一反應...線段樹...

然後再去想分塊:

有點水...也是運用lazy的思想啊,先存一下每一塊的和,對於頭尾就可以直接加(記得更新分塊和),然後中間的塊直接把和加上去,隨便檢查一下細節就搞定了。

**:

1 #include2 #include3 #include4 #include5 #include6

#define qread(x) x=read()

7using

namespace

std;

8 typedef long

long

ll;9

inline ll read()

1013

while(ch>='

0' && ch<='9')

14return x*f;15}

16 ll n,a[51000],ba[51000],sum[51000

];17 ll block,pos[51000

];18

void

update(ll l,ll r,ll c)

1926

void

sol(ll l,ll r,ll c)

2736

intmain()

3745

for(int i=1;i<=n;i++)

46

51return0;

52 }

LOJ 6280 數列分塊入門 4

給出乙個長為 n 的數列,以及 n 個操作,操作涉及區間加法,區間求和。第一行輸入乙個數字 n。第二行輸入 n 個數字,第 i 個數字為 a i 以空格隔開。接下來輸入 n 行詢問,每行輸入四個數字 mathrm l r c 以空格隔開。若 mathrm 0 表示將位於 l,r 的之間的數字都加 c...

LibreOJ 6280 數列分塊入門 4

題意 給你乙個n個整數的序列,讓你進行兩種操作 分析 這裡用分塊 這題直接做就行了,要先預處理下各塊的元素和,對它進行維護 修改的時候,對區間的不完整塊進行暴力,若是完整塊,就加到標記上 對於查詢,不完整塊暴力求和,完整塊,拿標記乘以區間長度並加上塊的元素和 include include incl...

LOJ 數列分塊入門 1

link 優雅的暴力,對於乙個數列,他不是乙個元素乙個元素處理,而是分成若干塊,成塊成塊的處理,以此達到降低時間複雜度的目的。首先,我們需要處理劃分的塊的大小 block 一般是根號n 塊的數目 每乙個元素對應第幾塊,然後,每一塊的左端點和右端點。完整的塊 更新 我們用lz i lz i lz i ...