noi前第十七場 題解

2022-03-16 17:57:37 字數 1003 閱讀 1632

考慮這樣乙個做法,對於每個點處理出左側和右側分別的最優決策點,然後比較二者誰更優即可。

當然這樣的點可以表示為若干個區間,對於其中每個區間,左右側誰更優是單調的,可以通過二分求解。

所以問題就是如何處理出這樣的若干個區間。

可以想到這個最優決策點就是上凸包會切到的點。

所以寫乙個單調棧維護就好了。

學習了一下如何做線性規劃對偶,大概可以這樣做:

首先將對偶的式子化為標準型,最小化變數,約束條件為一些變數 \(\geq\) 常量,並且每個變數 \(\geq 0\)。

對每個約束條件設定乙個對偶變數,對偶問題就是用這些對偶變數盡量去表示出乙個下界,切到原來最小化的東西。

所以其對偶問題就是最大化對偶變數,滿足每個對偶變數 \(\geq 0\),並且對偶變數滿足在每個原變數上的係數和 \(\geq\) 原變數的該係數。

本題可以寫為

\(\text\ \sum \limits_^n x_i+\sum \limits_^ny_i+s\)

\(\text.\forall_\ x_i+y_j+\frac\geq a_\)

\(\forall_ x_i \geq 0,\forall_ y_i \geq 0,s \geq 0\)

對偶一下就是

\(\text\ \sum \limits_a_d_\)

\(\text\forall_ \sum \limits_^n d_ \leq 1\)

\(\forall_ \sum \limits_^n d_ \leq 1\)

\(\sum \limits_\frac}\leq 1\)

將最後乙個式子中的 \(c\) 乘到右面去,可以發現問題就是匹配個數 \(\leq c\) 的最大帶權匹配。

所以寫乙個 spfa 費用流,卡卡常就能通過了。

因為可以用費用流去做,所以這個函式顯然是凸的。

所以鏈分治然後寫個類似閔可夫斯基和的東西合併答案就完事了。

具體來說,每次分治合併一條重鏈,對於上面每個點的輕邊資訊,通過另外乙個分治來處理就好了。

noi前第十三場 題解

可以發現大概問題是一層一層的。對於每一層,一定會選完所有長度為 2x,2x 1 的連續段之後遞迴下一段。可以考慮將這樣的選擇合併在一起考慮,然後做乙個 dp 可以發現概率的大小大概只與剩下的奇數 偶數段的個數有關,所以記錄奇數段的個數就可以轉移了。然後的問題是怎麼繼續考慮下一層。比較簡單的是奇數段,...

noi前第十場 題解

可以直接寫出乙個簡單的 dp 然後發現這個 dp 的資訊只需要存 a 集合選的個數和末尾選的哪個集合。不妨寫成乙個多項式,那麼我們只關心邊界的情況。所以寫乙個分治 fft 即可。考慮對於每條邊,列舉所有能到達這條邊的角度,計算出合法的面積。所以只需要對角度進行積分即可。為了方便地計算出這個東西,可以...

noi前第九場 題解

可以發現 0 1 這個限制類似於求路徑數,使得路徑經過的邊權恰好合法。顯然可以用容斥來求,這樣可以將問題轉化為欽定其中若干條邊權為 1 其他邊權任意的路徑數。這樣做有乙個好處,原來問題中的 2 的集合可以縮減狀態數。對於欽定之後的若干條 1 邊組成的鏈,可以直接視為無序的。也就是說,可以直接對 n ...