2024.10.22 鮮花

xrlong發表於2024-10-22

列表 題解

你從未離去
浩瀚星空裡
只剩你的背影
銀河已凝結成冰
記憶滑過淚滴
想象能回到過去
終會存在我心底
雖然逃避
她消失在夢裡
日出的幻境
再次感覺到你
風送來你的呼吸
月色倒映著驚喜
原來你從未離去
默默守護在這裡
無聲無息
如影隨形
我不再迷茫
思念是唯一的行囊
漫天的星光
有一顆是你的願望
前方的路不再孤單漫長
天空下你我不再守望
輕聲歌唱
在我身旁
日出的幻景
再次感覺到你
風送來你的呼吸
月色倒映著驚喜
原來你從未離去
默默守護在這裡
無聲無息
如影隨形
我不再迷茫
思念是唯一的行囊
漫天的星光
有一顆是你的願望
前方的路不再孤單漫長
天空下你我不再守望
輕聲歌唱
在我身旁
我不再迷茫
思念是唯一的行囊
漫天的星光
有一顆是你的願望
前方的路不再孤單漫長
天空下你我不再守望
輕聲歌唱
在我身旁

其實昨天頂真就讓寫了,但一直沒時間,今天補上來得及嗎 QwQ?

但好像就算寫了也基本沒人看的懂。

首先先考慮題面在幹啥,相當於是先選最中間的,如果刪掉左邊一個,就選一個右邊,如果刪掉右邊一個就選上左邊。

顯然答案具有單調性,考慮二分割槽間長度,列舉左端點 \(L\),將在答案區間的點在原序列標記成 \(1\),否則是 \(0\)

於是問題轉化為如何判斷是否能取到所有 \(1\)

考慮雙指標 \(l,r\) ,初始時 \(l=n\)\(r=n+2\) 處,表示下一次可能選的值,顯然每次是儘可能刪掉近的 \(0\),且不能刪 \(1\),考慮若 \(l,r\) 中有一個是 \(0\),則一定是刪掉 \(0\) 使得 \(l,r\) 同時向左右跳一個,若是都是 \(1\),就是刪掉左邊或右邊最近的一個,使另一邊跳一個,容易發現刪掉左邊和右邊是一樣的,最後跳到頭證明都能取,否則一定有一組 \(1\) 卡住了不能都取。

模擬即可達到 \(O(n)\) 的複雜度。

考慮最佳化,發現在列舉 \(L\) 時每次只會增刪一個值,考慮動態維護判斷。

首先發現在都是 \(1\) 時指標的跳動不對稱,考慮改變操作,變為將最近的 \(0\) 變成 \(1\),兩邊同時跳一個,容易發現其剩餘對於序列沒有變化。

於是將兩邊一起考慮,當值是 \((0,0),(0,1),(1,0)\) 時直接跳,當值是 \((1,1)\) 時要將後面一個 \(0\) 變成 \(1\)

發現只有 \((1,1)\) 可能會卡住,考慮 \((0,1)\) 改掉一個 \(0\) 會變成 \((1,1)\),並不會有貢獻,\((1,0)\) 同理,只有 \((0,0)\) 可以消掉一個。

\((1,1)\) 的貢獻為 \(1\)\((0,0)\) 的貢獻是 \(0\),因為大於 \((1,1)\) 個數的 \((0,0)\) 不會有貢獻,於是問題變成了從前往後依次加,動態對 \(0\)\(max\)

這是一個經典問題,考慮 衝刺CSP聯訓模擬2——星空遺蹟 的做法,將對 \(0\)\(\max\) 拆掉,問題變成最後是依次加的歷史最小值,可以線段樹上二分,也可以維護字首和後區間加區間 \(\min\)

P