給定乙個長為 \(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 個數字前插...