分塊系列 數列分塊入門6 解題報告

2022-04-29 20:57:09 字數 820 閱讀 6875

單點插入,單點詢問。

分塊的小技巧可多啦 o(∩_∩)o哈哈~

用乙個vector來記錄每個塊的元素。vector提供了強大的insert函式,插入某個元素只要寫一點點就可以啦o(∩_∩)o,就是乙個乙個列舉塊,直到找到插入位置屬於哪個塊,然後insert一下就ok。不過,如果插入元素集中於乙個塊的話就尷尬了qaq複雜度飆公升。所以我們要對塊進行重新分配。我採用若乙個塊元素多於10倍原有元素個數時就重排~(由於資料隨機分配,不進行重排其實也不會tle,甚至直接1個vector插入也能過 qaq 資料水???建議還是寫下重排,因為完全可以卡掉不重排的)

#includeusing namespace std;

#define maxn 100005

int n, d, nn;

int a[maxn<<1];

vectorv[1005];

inline void mer()

}inline void div()

inline int get( int wh )

}inline void ins( int wh, int x ) }}

int main()

return 0;

}

有些分塊的技巧性很強,平時注意歸納(*^▽^*)

數列分塊入門1

數列分塊入門2

數列分塊入門3

數列分塊入門4

數列分塊入門5

數列分塊入門6

<-

數列分塊入門7

數列分塊入門8

數列分塊入門9

蒲公英公主的朋友

分塊系列 數列分塊入門7 解題報告

區間乘法,區間加法,單點詢問。寫過線段樹模板2的童鞋應該很清楚了吧qaq 由於 與markdown衝突,所以用 代替o o 我們把乙個數表示為 a i tg2 b i tg1 b i tg2表示乘法標記,tg1表示加法標記。對於不完整的塊,直接 a i a i tg2 b i tg1 b i 將這個...

分塊系列 數列分塊入門1 解題報告

區間加法,單點求值。數列分塊是個好東西。我這裡詳細介紹一下分塊演算法,便於初學者的理解 我這個蒟蒻原來也是看不懂分塊 先把陣列分成幾個塊塊,然後就可以對它們整體操作啦。也就是說,把乙個長度為的陣列,拆分成乙個個長度為sqrt n 小塊 當然,最後一塊可能不完整,但是不用管 記錄每個數所屬的塊 也就是...

6282 數列分塊入門 6

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