noip2017解題報告題解

2021-08-10 17:23:45 字數 1817 閱讀 6190

noip 2017 提高組題解

by 杜瑜皓

november 12, 2017

1 math

輸出 ab − a − b。因為如果 x, y 是 ax + by = n 的一組解,那麼 x + bt, y − at 也是一組解,容易發現最大的不滿足的 (x, y) 為 (−1, a − 1),(b − 1, −1) 即 n = ab − a − b 無解。

2 complexity

模擬。首先判定 err,因為 err 只有 f 和 e 不匹配或者新建的變數與已經存在但未被銷毀的變重複兩種情況。所以可以使用乙個棧,記錄一下 f 和 f 對應的變數判定即可。然後是計算複雜度,我們可以把一段**看成 for 迴圈巢狀並列結構,然後並列結構又是一堆 for 迴圈形成的類似於樹形的結構。首先考慮並列結構,並列結構就把各個部分的複雜度的指數取 max。然後就是並列結構外面套一層 for 迴圈,需要一點簡單的討論。1. 如果上下界都是常數,並且下界不超過上界,整個迴圈體會被執行常數次,所以複雜度的指數不會變。2. 如果上下界都是常數,並且下界超超過上界,那麼會執行一次判斷,但並不會執行這個迴圈體,複雜度變成 o(1)。3. 如果上下界都是 n,同 1。4. 如果下界都是 n,上界是常數,同 2。5. 如果上界都是 n,下界是常數,那麼整個迴圈體會被執行 o(n) 遍,時間複雜度的指數加1。可以把樹建出來然後用樹形 dp 的方法實現,也可以直接在判 err 的棧上記錄。

3 park

首先求出從 1 號點出發到每個點的最短路,記作 d1(u)。對於一條邊 (u, v),我們令w′(u,v) = d1(u)+w(u,v)−d1(v),也就是把每條邊的邊權更改為 w′(u,v)。因為 d1(u)+w(u,v) ≥ d1(v),1所以新的圖邊權還是非負的。並且對於從 u 到 v 的任意一條路徑,總長度變成了原來的長度+d1(u) − d1(v)。所以變成了我們統計找 1 到 n 號點路徑不超過 k 的路徑。首先我們來考慮一下如何處理 0 邊以及方案無窮大的情況。方案數為無窮大當且僅當存在乙個點 u 能通過 0 邊走回自己,然後存在一條從 1 到 n 的路徑經過了 u 點並且長度不超過 k。所以我們可以求出 n 在新圖中沿著反方向到每個點的最短路,記作 d2(u),如果乙個點d2(u) > k,也就是這個點得走超過 k 才能到達 n 點,我們可以把這樣的點去除。剩下的點到n 號點的距離都不超過 k。也就是說在剩下的圖中如果存在乙個零邊構成的環,那麼方案數就是無窮大。這部分的判定只要把所有的零邊拿出來,然後進行拓撲排序即可,如果零邊形成的圖是個有向無環圖,那麼方案有限。接著考慮轉移,記 dp[u][i] 表示從 1 號點到 u 號點距離不超過 i 的方案。我們把 i 作為階段,先考慮零邊,也就是內部的轉移。對於零邊,我們可以按照拓撲排序得到的拓撲序轉移。對於非零邊,直接轉移到 dp[v][i + w′(u,v)] 即可。時間複雜度 o((n + m)log n + mk)。

4 cheese

我們把每個洞建個點,然後把上下邊界建個點。兩個點如果可達那麼連邊。問題就是問上下邊界對應的點是不是連通。接著考慮判定兩個點不是可達。對於乙個洞到上下邊界可不可達直接看 z 軸即可。兩個洞可不可達只要判定圓心距是不是不超過 2r。注意這裡距離的判定建議用整數避免精度問題。

5 treasure

容易發現每層的邊對應的權值都不一樣,所以可以按層考慮狀壓 dp。令 dps,i 表示前 i 層,選的點集為 s,接著列舉 s 補集的子集 s′,作為第 i + 1 層的點,對於 s′ 中每個點,選擇一條連向 s 中最小的邊。這樣直接寫的時間複雜度是 o(3nn3) 的。可以加一點優化,比如 s 和 s′ 的代價對於不同的 i 相同,以及可以預處理 u 到任意集合 s 中的最小的邊,所以我們可以按 s 從小帶大 dp,加這兩個優化之後時間複雜度為 o(3nn)。搜尋加剪枝也可以得到很高的分數,甚至滿分。

6 phalanx

解題報告 NOIP2017

思路 這個是當年選手最後悔的也是大部分人能猜出來但是無法嚴格證明的題目 我來證明一下 好吧,我不會 但我們直接打表找規律,發現答案就是 ab a b include using namespace std long long a,b int main int main for int i 0 i0 ...

NOIP2017解題報告

啊不小心點發布了,懶得刪了就這樣吧,雖然還沒寫完,也不打算寫了大概。d1t1 結論題 沒什麼好說的 d1t2 模擬 沒什麼好說的 d1t3 70分演算法其實比較好想。沒有0邊,就跑最短路,然後按dis從小到大轉移。場上最後十分鐘才發現單向邊,就沒時間考慮0邊,並且相當於 一樣排了個序,水了60 肯定...

NOIP2017 提高組解題報告

day1總結 allsol今次day1該拿的分基本上都拿好了,就是題目太碼農了,調了很久沒太多時間去想t3,t3直接暴力水過就好。在比賽中,合理的使用了對拍,拍出了t1正解,也是頗為激動的。所以說還是平時比賽認真點,多打對拍什麼的嘛。day2加油epointt1 100 t2 100 t3 50 m...