聯合省選 2024 題解

Southern_Dynasty發表於2024-03-12

D1T1 - P10217 [省選聯考 2024] 季風

約定:令 \(a_i,b_i\) 代替原來的 \(x_i,y_i\),避免變數重名。

顯然地,考慮按 \(m\bmod n\) 的值分類,那麼每一類都相當於若干個整段 \(+\) 一段字首。

假設加上的是 \([1,i]\) 字首,選了 \(m'\) 個整段,那麼 \(a\) 的和可以表示為\(m'\times suma_n+suma_i\)\(b\) 同理。現在考慮如何對於一個 \(m'\) check,注意到 \(a',b'\)實數,於是不難猜測,有解當且僅當:

\[|m'\times suma_n+suma_i-x|+|m'\times sumb_n+sumb_i-y|\le (m'n+i) \]

注:\(m'n+i\) 是實際的 \(m\)

於是做一點轉化,令 \(x\to x-suma_i,y\to y-sumb_i\),那麼不難發現此時絕對值內的 \(suma_i,sumb_i\) 消失了。於是只需要分四段大力分討即可。

注意到答案實際上相當於維護 \(\le 3\) 個形如 \(ax\le b\) 的不等式的解集。這個隨便做就行,我賽時寫繁了,用了一個 pair<int,int>array<int,3> 儲存最終的解集(可以直接維護左右端點,比較好寫),同時細節也很多,比如我就掛了 \(60\text{pts}\)

複雜度 \(O(n)\),可以透過。

Code

相關文章