給出乙個長為 nnn 的數列,以及 nnn 個操作,操作涉及區間加法,單點查值。
分塊,每次更新的話對塊兩側不完整的地方暴力更新,對完整的塊內部分打標記,查詢時直接返回資料值和標記部分的值即可。
#include
using
namespace
std;
typedef
long
long ll;
const
int nmax = 5e4 + 100 ;
const
int inf = 0x3f3f3f3f;
const
int mmax = sqrt(5e4 + 100) + 100;
ll data[nmax];
ll tag[mmax];
int n,block,num,l[mmax],r[mmax],belong[nmax];
void init()
int main() else
}else
printf("%lld\n",data[r] + tag[belong[r]]);}}
return
0;}
LOJ 6277 數列分塊入門 1
給出乙個長為 n 的數列,以及 n 個操作,操作涉及區間加法,單點查值。第一行輸入乙個數字 n。第二行輸入 n 個數字,第 i 個數字為 a i 以空格隔開。接下來輸入 n 行詢問,每行輸入四個數字 mathrm,l,r,c,以空格隔開。若 mathrm 0 表示將位於 l,r 的之間的數字都加 c...
LOJ 6277 數列分塊入門 1(分塊入門)
記憶體限制 256 mib時間限制 100 ms標準輸入輸出 題目型別 傳統評測方式 文字比較 上傳者 hzwer 提交 提交記錄 統計討論 3 測試資料 題目描述 給出乙個長為 n 的數列,以及 n 個操作,操作涉及區間加法,單點查值。輸入格式 第一行輸入乙個數字 n。第二行輸入 n 個數字,第 ...
LibreOJ 6277 數列分塊入門 1 分塊
題解 感謝hzwer學長和loj讓本蒟蒻能夠找到如此合適的入門題做.這是一道非常標準的分塊模板題,本來用打標記的線段樹不知道要寫多少行,但是分塊只有這麼幾行,極其高妙.如下 include include include include include using namespace std int...