Luogu P2827蚯蚓(堆轉佇列)

2022-05-01 02:06:08 字數 1135 閱讀 6868

按照國際慣例先發題目鏈結‍

woc從4月就開始做這sb題。最開始30分公升到65分不管了,直到最近幾天公升到85分,再到今天ac。激動的心情自然是那些一遍就a或者一小時以內就a的神犇難以想象的。

下面說說主要幾個分段。

# 35分

按題意用堆模擬。每次暴力修改蚯蚓長度,於是get**:tle藍。

# 65分

考慮到暴力修改消耗的時間複雜度過大,於是考慮偷懶。既然我們不能暴力增長已經存進堆的蚯蚓長度,那就剪短將要存進堆的蚯蚓長度。將目前蚯蚓增加的長度記為mark,從堆裡取出來的蚯蚓長度+mark,要存進堆的蚯蚓長度-mark再-q。每次迴圈mark+=q。

# 100分

先忽略mark和q。蚯蚓肯定是越切越短,那我們還用堆幹嘛?直接開三個佇列存蚯蚓,第乙個佇列存輸入的蚯蚓,對於切出來的每條蚯蚓,長的放第二個佇列,短的放第三個佇列。

可以得到三個佇列都是單調遞減的。取出的蚯蚓從三個佇列的隊頭取最大的。這樣就轉化為普通佇列解法。

**如下

#include#include

#include

#include

#include

using

namespace

std;

bool cmp(int a,int b)

inline

long

long

read()

while

(isdigit(ch))

return num*f;

}inline

long

long swap(long

long a,long

long b)

long

long

mark;

long

long

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

long

long que[10000000

];long

long f[10000000],d[10000000],fh=1,dh=1,ft,dt,qt=1

;int

main()

printf("\n

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

return0;

}

蚯蚓 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。蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓...

洛谷 2827 蚯蚓

有n只stupid蚯蚓,每次把最長的切成兩條蚯蚓,切口比例會給出 詢問第t次,第2t次 切割的蚯蚓的原長度,把最終的長度排序後輸出看起來像是大根堆是不是,然而只能拿85分 事實上根本不用堆注意到,先切割的蚯蚓的切割後的長度必定大與後切割的 也就是自帶單調性 然後就和平了因為用了sigma這個東西,所...

題解 LuoGu2827 蚯蚓

原題傳送門 此題非常優先佇列,非常裸 但是資料規模似乎在暗示我們甚至有o n o n o n 寫法驚訝地發現題目中的乙個隱含性質 先切的蚯蚓一定比對應的後切的蚯蚓長 維護3個佇列,分別表示沒切過,p,1 p p,1 p p,1 p 3組蚯蚓 因為單調,每次比一比隊首彈出,隊尾插入 再是用到乙個思想,...