NOIP 2016 蚯蚓(洛谷 P2827)

2021-08-01 10:36:23 字數 979 閱讀 8478

本題中,我們將用符號[c]表示對c向下取整,例如:[3.0」= [3.1」=[3.9」=3。

蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去請神刀手來幫他們消滅蚯蚓。

蛐蛐國裡現在共有n只蚯蚓(n為正整數)。每只蚯蚓擁有長度,我們設第i只蚯蚓的長度為a_i(i=1,2,…,n),並保證所有的長度都是非負整數(即:可能存在長度為0的蚯蚓)。

每一秒,神刀手會在所有的蚯蚓中,準確地找到最長的那乙隻(如有多個則任選乙個)將其切成兩半。神刀手切開蚯蚓的位置由常數p(是滿足0

/*

這道題目網上有優先佇列的做法,但是好像會tle,我沒試,

那天和包子學長聊天,忘了怎麼的聊到noip,他說有一道資料結構題,

當時我就蒙蔽了,他還說能用優先佇列優化,大概就是這道吧,

雖然超時但是部分分已經相當可觀了,這或許就是他出一等的原因吧

*/#include

#include

#include

using namespace std;

const int maxn = 1e5 + 10;

const int maxm = 1e7 + 10;

int n,m,q,u,v,t;

int a,b,c,t1,t2,t3,h4,h2,h3;

int q1[maxn],q2[maxm],q3[maxm],q4[maxn+maxm];

bool cmp(int

x,int

y)int pop_head(int k)

else

if(h2>t2&&y>=z)

else

if(h3>t3)

else

return -1;

}int main()

while(q4[h4]=pop_head(m),q4[h4]!=-1) h4++;

coutreturn

0;}

noip2016 洛谷P2827 蚯蚓

這個題只知道可以用優先佇列去做,但是不知道正解想法,看到題解後恍然大悟,詳情請看 中間 include include include include include using namespace std int n,m,q,u,v,t,q1 8000010 q2 8000010 q3 80000...

NOIP2016蚯蚓(洛谷2827)

標籤 佇列,模擬 題目描述 本題中,我們將用符號 c 表示對c向下取整,例如 3.0 3.1 3.9 3。蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去請神刀手來幫他們消滅蚯蚓。蛐蛐國裡現在共有n只蚯蚓 n為正整數 每只蚯蚓擁有長度,我們設第i只蚯蚓的長度為a i i 1,2...

洛谷P2827,NOIP2016 蚯蚓

傳送門 考慮優先佇列 但是蚯蚓的長度是變化的,如果每一次操作都修改所有蚯蚓的長度,必然超時.但是每一次所有蚯蚓中,只有被斬斷生成的兩個沒有 q,其它所有蚯蚓長度均 q.不難想到,用優先佇列 兩個值 len表示被壓入優先佇列時的長度,t表示被壓入優先佇列的時間,如果當前時間為i,那麼當前蚯蚓的實際長度...