題目:傳送門
簡要題意:
給出乙個長為 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 ...