洛谷P2827 蚯蚓 思路題

2022-05-12 11:48:08 字數 888 閱讀 5328

題目:

思路...

用優先佇列模擬做的話,時間主要消耗在每次的排序上;

能不能不要每次排序呢?

關注先後被砍的兩條蚯蚓 x 和 y,發現砍完以後,它們的兩部分對應還滿足原來的大小關係!

從兩條蚯蚓出發,可以推知所有蚯蚓砍完以後的兩部分還對應滿足原來的大小關係;

但兩部分之間就不一定了;

所以開三個佇列,分別記錄原來的蚯蚓,砍後第一部分的蚯蚓,砍後第二部分的蚯蚓;

每次取三個佇列中最長的蚯蚓砍,砍出來的兩部分對應加到砍後的兩個佇列裡;

即使是又砍了已經被砍過的蚯蚓,把它模擬成原來的蚯蚓,也滿足剛才的那種做法;

於是這題就a了;

有不少細節呢,而且注意要開 long long !以後應該對這些敏感一點;

由這題得到的經驗是,遇到關於詢問大小關係,沒有規律,需要不斷排序的問題的時候,關注相鄰的兩個量的變化關係,也許能有意想不到的發現。

**如下:

#include#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;queue

int> >q1,q2,q3;

priority_queue

ans;

intconst maxn=1e5+5

;int

n,m,q,u,v,t,a[maxn];

intmain()

printf("\n

");for(int i=1;i<=n+m;i++)

return0;

}

洛谷P2827 蚯蚓

本題中,我們將用符號 lfloor c rfloor 表示對 c 向下取整,例如 lfloor 3.0 rfloor lfloor 3.1 rfloor lfloor 3.9 rfloor 3 蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去請神刀手來幫他們消滅蚯蚓。蛐蛐國裡現...

洛谷p2827蚯蚓題解

題目 演算法標籤裡的演算法什麼的都不會啊 什麼二叉堆?qbxt出去學習的時候講的,一段時間之前做的,現在才寫到部落格上的 維護3個佇列,佇列1表示最開始的蚯蚓,佇列2表示每一次被切的蚯蚓被分開的較長的那一部分,佇列3表示每一次被切的蚯蚓被分開的較短的那一部分。我們先把原序列排序,因為不管怎麼切,先被...

蚯蚓 P2827 蚯蚓

本題中,我們將用符號 c lfloor c rfloor c 表示對c向下取整,例如 3.0 3.1 3.9 3 lfloor 3.0 rfloor lfloor 3.1 rfloor lfloor 3.9 rfloor 3 3 0 3.1 3 9 3。蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓...