我們不難發現先被切開的兩半一定比後被切開的兩半大,這樣就天然的生成了佇列的單調性,就可以省去乙個log。所以,我們開三個佇列,分別為or
igin
,big
,sma
ll,每次查詢時將三個佇列的對頭進行比較即可。
code:
#include
#include
#include
#include
using namespace std;
const
int maxn =
500000+4
;bool cmp
(int i,
int j)
struct node};
queue small, big;
queue<
int>origin;
priority_queue<
int> fin;
int val[maxn]
;int
main()
printf
("\n");
while
(!origin.
empty()
)while
(!small.
empty()
)while
(!big.
empty()
)int cnt =0;
while
(!fin.
empty()
)return0;
}
洛谷P2827 蚯蚓
本題中,我們將用符號 lfloor c rfloor 表示對 c 向下取整,例如 lfloor 3.0 rfloor lfloor 3.1 rfloor lfloor 3.9 rfloor 3 蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去請神刀手來幫他們消滅蚯蚓。蛐蛐國裡現...
洛谷P2827 蚯蚓 單調佇列
初始時有 n 個蚯蚓,每個長度為 a i 有 m 個時間,每個時間點找出長度最大的蚯蚓,把它切成兩段,分別為 a i p 和 a i a i p 除這兩段外其他的長度都加乙個定值 q 每次詢問被蚯蚓被切前的長度 用堆模擬可獲得 50 85 不等的分數。蚯蚓的長度有單調性。然後這題就做完了。首先把 a...
洛谷p2827蚯蚓題解
題目 演算法標籤裡的演算法什麼的都不會啊 什麼二叉堆?qbxt出去學習的時候講的,一段時間之前做的,現在才寫到部落格上的 維護3個佇列,佇列1表示最開始的蚯蚓,佇列2表示每一次被切的蚯蚓被分開的較長的那一部分,佇列3表示每一次被切的蚯蚓被分開的較短的那一部分。我們先把原序列排序,因為不管怎麼切,先被...