Codeforces Round 955 (Div. 2)

HaneDaniko發表於2024-06-26

A

非常好特判

一共就五種情況,相等,或者正反兩種包含(都是不能可能不包含),或者正反兩種先後(都是可能不相等),寫五個 if 就行了

B

我到底為什麼要跳了這題???????????????????????????????????????????

顯而易見這玩意模著模著就變成迴圈了(我真沒看出來),\(1\)\(y-1\) 為一個迴圈節,所以實際上只需要找一點就行了(實際上是一直找到第一個取模的地方,這樣我們就能 \(O(1)\)) 解決這題

C

考慮定義 \(f[i]\) 表示進行到第 \(i\) 位時候的答案,可以發現狀態轉移:

\[f[i]=min(f[k],f[k]+1) \]

然後再判一下轉移還是不轉移就行了.

而且發現 \(f[i]\) 是有單調性的,套四邊形那裡的板子就行.

賽時主要是寫麻煩了,定義的 \(f[i][1/0]\) 表示進行到第 \(i\) 位,並且選/不選第 \(i\) 位的答案,得到轉移方程:

\[f[i][0]=max(f[i-1][0],f[i-1][1]) \]

\[f[i][1]=max(f[k][0]+1) \]

注意到後一個顯然需要單調佇列搞一下,於是調了一小時😥

最後發現其實是因為 寫單調佇列最佳化別他媽開兩維的

改成上面那版就過了,但是賽後發現濤哥根本就沒寫 DP,這題 貪心就能過😅😅😅😅😅😅😅

D

沒開這題,但是裴蜀定理能擴充套件到多元,記一下.

相關文章