1. 程式人生 > 實用技巧 >CSP-s2020初賽遊記

CSP-s2020初賽遊記

這次初賽是我競賽生涯裡參賽感覺最好的一次,從昨天下午做完作業來到機房起,整個人處於一個鬆弛的狀態,實在是不怎麼緊張,回想起一年前那個戰戰兢兢的自己,心感到我一年來的進步是如此之大,不但在競賽水平,更在心理狀態。
考試的時候很淡定,閱讀第三題我做了一個多小時,因為我覺得這不但是一個很有難度,要求很高的程式設計題,更是一道數學趣味題,雖然我最終沒有完全理解,但是這個過程我很享受。
完善程式做了不到半小時,相比於去年取石子那道奇葩狀壓使我15分全扣光,今年的水平很穩定,直接秒殺。
去年的我只考了73.5,接下來的兩週時間心態爆炸,整個人渾渾噩噩,雖然後面又滾進了複賽,但這也很說明問題。今天我雖然只考了88,但是體驗比去年好很多。

簡要評論一下題目
在這裡插入圖片描述
唯一一道硬體題目,看起來B最正經
在這裡插入圖片描述

出題者真是一個天才,我本來還以為這又是一道原題,結果這個棧底真的是點睛之筆

閱讀第一題是在做兩個數or起來的最大值
在這裡插入圖片描述
我竟然沒有意識到n可以等於0,然後我錯了,可惜至極
在這裡插入圖片描述
在這裡插入圖片描述
這題有數學思想,反證法。若輸出為偶數,假設只有一個偶數,那麼任意兩個數or起來,最後一位肯定是1,那麼答案就是奇數了,矛盾,所以C是正確的

閱讀第二題,狂喜。前一天晚上我剛發了個求kth的部落格,今天押到題了。
在這裡插入圖片描述
但是今年初賽又加了一個跟去年一樣坑的出題方法,去年是把並查集的路徑壓縮刪掉,今年把快排部分搞得亂七八糟,可以發現程式碼裡面在交換的時候處理得很不好,所以最劣複雜度可以到 O ( n 2 ) O(n^2)

O(n2),我錯了。
在這裡插入圖片描述
同樣的,這道題目用這個程式碼也是 O ( n 2 ) O(n^2) O(n2),我又錯了。

第三題是數學小遊戲。
一個字串,選擇一個點 p p p為軸點,可以令區間 [ 1 , k ] [1,k] [1,k]整體往右移動一格, [ k , n ] [k,n] [k,n]整體往左移動一格,問最少步數是初始字串變成目標字串。
我還看出了他是在雙向bfs
在這裡插入圖片描述
其實我覺得是對的,但答案是錯的
在這裡插入圖片描述

我模擬了01234到43210的情況,答案是8
所以前後兩項的差分別是4,6,6,8,8,10……
通過合情推理得到答案是68
在這裡插入圖片描述
這題我四個選項分別構造了幾種情況,只有A是無解的,但是我又錯了,可能是我計算錯誤。

完形第一題很簡單,但是有一些細節
在這裡插入圖片描述
本體其實是 c u r W + ( B − c u r V ) ∗ w i v i curW+\frac{(B-curV)*w_i}{v_i} curW+vi(BcurV)wi
在這裡插入圖片描述
不要被上面的矇蔽,這裡不用除東西,選擇B

完形第二題跟去年一樣的狀壓,所以我有經驗了,很好想
在這裡插入圖片描述
x − l o w b i t ( x ) x-lowbit(x) xlowbit(x)手摸一下,D
在這裡插入圖片描述
我認為四個選項其實都合理,但是硬要說的話,只有C是有意義的

今年題目比去年有水平,也比去年簡單一點
後續可能會再探尋一下閱讀第三題,我覺得出的很好