題目大意:給定乙個由 n 個數組成的序列,維護兩種操作:單點詢問,單點插入。n < 100000
題解:在塊內維護乙個鍊錶,支援動態插入數字,同時對於非隨即資料來說,若塊的大小過大,需要重構。
注:對於 c++ vector 的 insert 函式的含義是在給定迭代器的後面插入數值。
**如下
#include using namespace std;
const int maxn=2e5+10;
inline int read()while(!isdigit(ch));
dowhile(isdigit(ch));
return f*x;
}int n,q,st[maxn],top,tot;
struct nodeb[1000];
void make_block()
void rebuild()
void solve() }}
int main()
loj 6282 數列分塊入門 6
題目 傳送門 簡要題意 給出乙個長為 n的數列,以及 n個操作,操作涉及單點插入,單點詢問,資料隨機生成。題解 不得不說hzwer有點懶 好好打分塊 分塊的題實在是越來越噁心,越來越暴力了.第一反應就是硬插.然後重新分塊.感覺要爆.一發hzwer 結果.每次其實最多就影響兩個塊.爆?不存在的.然後就...
LOJ6282 數列分塊入門 6 分塊
給定乙個長為 n 的序列,有 n 次操作,每次可能在指定位置插入乙個數,或者詢問指定位置的數是多少,資料隨機 考慮到資料隨機,我們維護 sqrt n 個vector,每次操作的時候暴力掃一遍找到對應下標的位置即可 事實證明這樣 t 了,我們該用list,於是就過了 include using nam...
6282 數列分塊入門 6
題目鏈結 插入值過後整個分塊已經不是平均分配了,可能導致某一塊過大,需要重新build,將塊元素平均。第一行輸入乙個數字 n。第二行輸入 n 個數字,第 i 個數字為 ai 以空格隔開。接下來輸入 n 行詢問,每行輸入四個數字 opt l r c,以空格隔開。若 opt 0,表示在第 l 個數字前插...