Boring data structure problem 模拟-双端队列
生活随笔
收集整理的這篇文章主要介紹了
Boring data structure problem 模拟-双端队列
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意 :
- 維護(hù)一個(gè)“雙端隊(duì)列”,1e7次操作,支持左插入,右插入,按值刪除,查找中點(diǎn)(靠右)值ceil[(m+1)/2]ceil[(m + 1) / 2]ceil[(m+1)/2],值不重復(fù)。
思路 :
- 1e7所以所有操作都要滿足O(1)O(1)O(1)
- deque不論是front,back,push_front,push_back,pop_front,pop_back都是O(1)O(1)O(1)
- 查詢中間位置,因此想到用兩個(gè)雙端隊(duì)列維護(hù),由于每次只插入一個(gè)數(shù),不難維護(hù)前后者長(zhǎng)度一樣
- 刪除操作,由于插入的值1?1e71 - 1e71?1e7,可以使用數(shù)組記錄每個(gè)數(shù)屬于哪個(gè)雙端隊(duì)列,刪除時(shí)直接將vis改為0且更新對(duì)應(yīng)雙端隊(duì)列的長(zhǎng)度即可,查詢時(shí)只要先將在右雙端隊(duì)列左端前vis == 0的值去掉即可,注意刪除后也要維護(hù)兩個(gè)雙端隊(duì)列長(zhǎng)度一致。
總結(jié)
以上是生活随笔為你收集整理的Boring data structure problem 模拟-双端队列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dota2 Pro Circuit 贪心
- 下一篇: Unfair contest 模拟-分类