LOJ6282 數列分塊入門 6 分塊

2022-06-06 21:45:13 字數 584 閱讀 5254

給定乙個長為 \(n\) 的序列,有 \(n\) 次操作,每次可能在指定位置插入乙個數,或者詢問指定位置的數是多少,資料隨機

考慮到資料隨機,我們維護 \(\sqrt n\) 個vector,每次操作的時候暴力掃一遍找到對應下標的位置即可

事實證明這樣 t 了,我們該用list,於是就過了

#include using namespace std;

#define int long long

const int n = 200005;

int n, a[n], b[n], len, siz[n];

listv[n];

#define li list::iterator

li operator+(li a, int b)

signed main()

v[p].insert(v[p].begin() + l, r);

siz[p]++;

} else

cout << *(v[p].begin() + r) << endl;}}

}

loj 6282 數列分塊入門 6

題目 傳送門 簡要題意 給出乙個長為 n的數列,以及 n個操作,操作涉及單點插入,單點詢問,資料隨機生成。題解 不得不說hzwer有點懶 好好打分塊 分塊的題實在是越來越噁心,越來越暴力了.第一反應就是硬插.然後重新分塊.感覺要爆.一發hzwer 結果.每次其實最多就影響兩個塊.爆?不存在的.然後就...

LOJ 6282 數列分塊6

題目大意 給定乙個由 n 個數組成的序列,維護兩種操作 單點詢問,單點插入。n 100000 題解 在塊內維護乙個鍊錶,支援動態插入數字,同時對於非隨即資料來說,若塊的大小過大,需要重構。注 對於 c vector 的 insert 函式的含義是在給定迭代器的後面插入數值。如下 include us...

6282 數列分塊入門 6

題目鏈結 插入值過後整個分塊已經不是平均分配了,可能導致某一塊過大,需要重新build,將塊元素平均。第一行輸入乙個數字 n。第二行輸入 n 個數字,第 i 個數字為 ai 以空格隔開。接下來輸入 n 行詢問,每行輸入四個數字 opt l r c,以空格隔開。若 opt 0,表示在第 l 個數字前插...