單點插入,單點詢問。
分塊的小技巧可多啦 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 個數字前插...