省選模擬48

2022-03-26 19:00:34 字數 426 閱讀 4995

字首的最長公共字尾就是兩個長度在sam上對應的節點的lca的len,所以可以對於每個lca考慮。

在每個lca處考慮當前長度的貢獻,發現最優秀的解一定發生在兩個相鄰的下標之間。

所以直接啟發式合併,然後離線處理詢問就行了。

可以發現題目中對於點的要求就是重心。

也就是說,乙個點不能有大小大於$n/2$的子樹,可以發現這樣的子樹一定在重心方向。

然後可以發現,刪掉這個點到重心路徑上的點一定是無效的,因為剩餘子樹大小仍然大於$n/2$。

所以刪掉的邊只可能是重心周圍的邊,那麼只要貪心選取大小最大的子樹即可。

可以發現對於環中的點只要確定乙個點就可以確定剩餘所有點。

所以只要找到所有環對於每個環定向就行了。

然而直接跑會死。考慮對於大小為2的環,最優解顯然是左括號在前,所以最小環的大小是4,總複雜度就合法了。

省選模擬48

首先翻轉串,然後就是喜聞樂見的字尾lcp問題 莫隊很好寫,用set動態維護下排名序列,由於帶log,我只拿了50。正解考慮sam,答案為 l,r 在樹上結點中點對lca的len最大值。離線詢問,對串做掃瞄線,每次處理i,parent樹上編號同字首編號,那麼i點和前面所有點形成的貢獻在祖先鏈上。對結點...

省選模擬48 題解

問題是區間內最大的點對 lcs 容易發現 lcs 其實就是兩個字首的終止節點的 lca 的 len 考慮對每個 sam 上節點搞乙個 set 維護 endpos 集合。每次的操作就是合併兩個集合,然後節點 x 上 endpos 集合中兩兩可以形成 lcs geq len x 容易發現有一些點對是沒有...

省選模擬 19 09 11

ps.博主趁資訊課摸魚考的暴零模擬 看門人憑感覺就知道是長鏈剖分,將路徑查分一下,dis u di sv 2 dis lc adis u dis v 2 dis disu disv 2 disl ca 維護fu,if fu,i 表示u的子樹,深度為 i 的點的 dis disdi s最大值 考慮如何...