1. 程式人生 > 其它 >[整理]考前再口胡 CSP/NOIP 2016~2020

[整理]考前再口胡 CSP/NOIP 2016~2020

題目前會放上自認為的難度評級 \(1\sim10\)
由於這次基本都是嘴巴做的,所以難度評級不一定準確。

NOIP 2016

T1

\(1\),作為簽到題放一個模擬很合適。

T2

\(7.5\),雖然是一道好題但是放在 D1T2 著實不太合適。
考慮每個人產生的貢獻,這個可以將路徑分成兩段後直接計算。
然後我們直接計算一個點獲得的貢獻,這個貢獻一定是子樹內的點提供的,開桶記錄。
好像細節巨大多的樣子……

T3

\(5\),看起來是一個 dp 的樣子,實際上確實是一個巨大麻煩的期望 dp。
先求出全源最短路,然後很自然地設計出包含第幾節課、換了幾次、當前換不換的 dp 狀態。

T4

\(3\)二刷的時候一直沒看出來 \(k\)

是固定的
由於 \(k\) 是固定的,所以我們直接遞推即可。

T5

\(4.5\),用到了一些奇怪的技巧。
每次都排序顯然是不現實的,需要找一些性質使得不排序。
然後我們發現先切的切出來一定比後切的切出來長,所以對於切出來的開佇列直接加即可,每次從原始佇列(排過一次序)和切出來的佇列中取最大。

T6

\(5\),據說正解是狀壓加奇怪的優化,不過考場最親民寫法還是暴搜。
每頭豬可能恰好在一條拋物線上也可能和一頭單獨的豬組成拋物線,搜尋時注意細節處理。

NOIP 2017

T1

\(2\),屑找規律,不過嚴謹證明或者其他做法可能會稍難一點。

T2

\(3\),屑模擬。

T3

\(6\),弱化版直接 dp 巨大水,此題也只是加一維的事。
重點是判斷不可行,需要看 \(0\)

環是否在最短路上,實現上有一些細節。

T4

\(3\),其實暴搜加剪枝可以草過去的。

T5

\(6\),正解可能比較玄學,不過暴搜還是可以草過去。

T6

\(6.5\),正解似乎又是怪異的演算法,但是可以暴力開平衡樹。
然而並不可以,需要把前面連續的一段壓縮一下,這樣就真的可以了。

NOIP 2018

T1

\(1.5\),屑重題。

T2

\(3\),一個顯然的結論是新的系統一定由原系統中不能被其他數表出的陣列成。
然後可以 dp 之類的處理。

T3

\(5.5\),先諤分一下,然後以樹形 dp 的思路轉移最長的非匹配路徑。

T4

\(4\),原題直接暴力斷邊,可惜了一道毒瘤題。

T5

\(6\)

,大力分類討論,難度主要源於式子的噁心,有些小結論考場完全可以猜(暴論)

T6

\(8\),屑科技題,也有更加麻煩的倍增做法。

CSP-S 2019

T1

\(1.5\),按照題意模擬即可,不過屑出題人卡了 ull

T2

\(3.5\),先看鏈的部分分,發現可以從上一個左括號轉移以至線性解決,然後可以直接搬到樹上。

T3

\(8.5\),爬了,如果考場遇到這題我也就拿個暴力+菊花圖……
然後我們發現,把一個點的數運送到另一個點實際上確定了這些邊的刪除順序:起點不能刪過邊,終點不能再刪邊,其他點的邊必須連續刪除入邊和出邊。
然後對於這些關係,用並查集啊連結串列啊這些東西維護一下就行了,又是一個細節巨大多的題……

T4

\(5\),容斥 dp,轉化成有一種食材超過一半的方案數。

T5

\(6\),大力猜結論猜出後面的儘量小,然後我們再利用單調性之類的優化掉暴力,屑出題人卡 long long 還卡空間……

T6

\(8\),蒟蒻不會做於是看了題解……
發現重心有巨大神奇的性質:一個不是重心的點要麼父親為重心要麼重兒子子樹裡有重心。
所以我們可以倍增重兒子。

CSP-S 2020

T1

\(2.5\),屑模擬。

T2

\(3\),直接把所有可能的位求出來算就行了。屑出題人又卡了 ull,讓人不禁懷疑他和去年出題人的關係……

T3

\(5.5\),因為乘操作都是全域性乘,所以我們對於一條鏈只需要把後面的乘操作貢獻到前面的加操作上就行了。變成一張圖之後也很簡單,我們拓撲排序再倒倒序更新出呼叫操作的貢獻即可。

T4

\(9\),是真正的毒瘤題……
考慮最強蛇吃了後會發生啥事:肯定是先隨便吃直到不是最強的,然後容易證明只要最強蛇吃了不會變成最弱就還可以隨便吃。但是最強蛇如果會變成最弱(下稱有風險)就需要抉擇一下了:如果吃了以後能吃它的蛇沒有風險那麼必死無疑,否則有風險的蛇就要再看下一條蛇,以此類推。我們發現最終能不能吃跟奇偶性有關係,然後就做完了。
真的做完了嗎?我們發現最強和最弱不太好維護,屑出題人卡了對數複雜度,所以我們用雙佇列代替平衡樹。

NOIP 2020

T1

\(3\),按照題意隨便做即可,注意屑出題人又雙叒叕卡了 ull

T2

\(5\),肯定是列舉迴圈串計算,可能需要預處理一大堆東西。關於週期的判定,似乎不知道 KMP 的那個結論就不太可做的樣子……

T3

\(7\),屑構造。

T4

\(8\),這個操作可以說是很詭異了……
大概可以考慮走出去的條件,然後讓所有點一塊走看會剩下多少有貢獻的。
式子推出來好像需要加個自然數冪和的優化……

總結

總而言之,重新看一看歷年真題還是有一定幫助的。可以在一定程度上窺探到常考的演算法、試題風格甚至命題導向等資訊。
發現挺多題的程式碼實現都不是很常規且比較複雜,所以感覺需要練的大概是碼力了……
近兩年的題目難度有放飛自我的趨勢,也要加強思維的訓練。