1. 程式人生 > 其它 >9.4模擬賽

9.4模擬賽

part1:比賽過程&結果回顧

一、比賽過程:

先讀題,覺得第一題基本可做,也許能切,先放著不管。第二題不是很難,估計有一些奇怪的性質,至少能寫個暴力,先過。第三題,在k維上求最大點權獨立集,emmm估計是樹形dp或者貪心,仔細一看,題面過於複雜,好多隱藏條件根本看不出來,沒想出來怎麼在多個圖之間建邊,第一步就卡住了,連暴力都寫不出來,直接放棄。第四題,是數學推倒,只會(!n * n)的做法,估計第一個點都過不了。後來看到題解發現這題確實不可做,包括且不限於莫反的一大堆公式,這要是考場現推估計直接爆炸。

最後選定先做第二題在做第一題,第三第四題直接把樣例以及幾個手算能算出來的資料打了個表。
第二題暴力寫過了,然後發現D、U、R、L這四個操作可以互相抵消而且進行的順序並不影響結果,直接滾動陣列+特判+暴力修改+優化修改水掉30分。
開始做第一題,覺得就是一個小遞推,頂多有一個矩陣快速冪。先寫出一個按照題意剪枝的全排列dfs,暴力打表,直接找規律。然後就沒找出來。先打表把n=20以內全部打出來,水掉20分。現在總分20+30=50。
遞推推不出來我就以為這個並不是遞推,再加上覆雜度算錯了,然後就以為這個東西需要o(1)查詢,是需要推導一個公式,這方向都錯了自然就不可能有結果。
最後還剩1h30min,會過頭來做第二題,我就猜規律然後在結合純暴力程式碼驗證規律的正確性,最後推出來了一個可過80+的做法。結果程式碼難度特別大寫出一堆bug。以往的經驗告訴我這個時候debug是不會有結果的,於是乎就直接放棄,繼續做第一題。結果最後也沒推出來。

二、end:tot=第一題20+第二題10=30

第一題合情合理,估分和結果一樣。
第二題程式碼太長,滾動陣列有一個地方寫錯了常見bug的部落格又有素材了,但是我自己構造的資料和斷點除錯都沒能發現這個問題。。。掛掉40分,下次注意吧。
第三題第四題手算的打表沒得分也在意料之中。

三、總結:

整體心態非常平穩,但是還是debug能力+程式碼實現能力確實不夠。再加上我平時練得多的部分這次真的是一點都沒考,數論很多內容也只是會個定義+公式+特別裸的模版題。

part2一些比較重要的經驗:

(1)遞推最重要的性質是1~n的連續性,也就是找到f[i]對前面所有f的依賴性,而性質的推導重在從題意中找出如何從i找到n的過程
(2)雖然是個錯誤思路,但是遞推式有可能出現減法
(3)如果估計程式碼會很長的時候,就儘量慢點寫不出錯,要不然在資料不容易構造的情況下真的很難debug
(4)多練數論

part3:題解+一些題解所需的前置知識

施工中