題解:感謝hzwer學長和loj讓本蒟蒻能夠找到如此合適的入門題做.
這是一道非常標準的分塊模板題,本來用打標記的線段樹不知道要寫多少行,但是分塊只有這麼幾行,極其高妙.
**如下:
#include#include#include
#include
#include
using
namespace
std;
int tag[50010],a[100010],lump[50010
];int
n,sz;
void add(int l,int r,int
c)
if(lump[l]!=lump[r])
}for(int i=lump[l]+1;i<=lump[r]-1;i++)
}int
main()
for(int i=1;i<=n;i++)
while(n--)
else}}
題解 LibreOJ6277 數列分塊入門 1
更好的閱讀體驗 portal1 libreoj 給出乙個長為 n 的數列,以及 n 個操作,操作涉及區間加法,單點查值。第一行輸入乙個數字 n 第二行輸入 n 個數字,第 i 個數字為 a i 以空格隔開。接下來輸入 n 行詢問,每行輸入四個數字 opt l r c 以空格隔開。若 texttt 表...
數列分塊入門 1 LibreOJ 6277
有趣的分塊理論講解 給出乙個長為 n n n 的數列,以及 n n n 個操作,操作涉及區間加法,單點查值。input 第一行輸入乙個數字 n n n。第二行輸入 n n n 個數字,第 i i i 個數字為 a i ai ai,以空格隔開。接下來輸入 n n n 行詢問,每行輸入四個數字 opt ...
LOJ 6277 數列分塊入門 1
給出乙個長為 n 的數列,以及 n 個操作,操作涉及區間加法,單點查值。第一行輸入乙個數字 n。第二行輸入 n 個數字,第 i 個數字為 a i 以空格隔開。接下來輸入 n 行詢問,每行輸入四個數字 mathrm,l,r,c,以空格隔開。若 mathrm 0 表示將位於 l,r 的之間的數字都加 c...