【雜文】CSP2019 蒟蒻AFO(假)記
【初賽前 N 天】
時間:2019-10-15
今晚 \(2012\) 的初賽題做到心態爆炸,選擇考計算機基礎知識一臉懵逼,填空和后面一道大模擬直接跳過,最后居然還得了 \(60\) 多分。
【初賽】
時間:2019-10-18(day0 前一天)
昨天做了 \(NOIP2016\) \(day1\),原本應該是 \(2s\) 時限的 \(T2\) 老師沒注意只開了 \(1s\),然后就被卡掉了 \(5\) 分,今天做 \(day2\) 時又被老掉牙的 \(Cena\) 給坑掉了\(95\),心態爆炸。
(晚上)
一邊聽 \(y\) 總講組合數學,一邊臨時惡補初賽知識點,感覺今晚學到的東西(初賽)比這一個月來總結的還要多很多。果然啊,人在面對險境時總能爆發出不可思議的力量。
時間:2019-10-19(day0)
艹暈車,到考試地點后腦子里面一片混沌,早上剛背的知識點全忘光了。
不得不說單選還是挺水的,結果后面閱讀和完形直接原地爆炸螺旋升天,送上來的坑點一個都沒踩漏,還有最后一道狀壓推了接近一個小時沒看懂。
對臉懵逼。
下午用網上流傳的問卷星測了一下,居然有 \(83.5\),感覺應該是穩了吧。。
【復賽前 N 天】
時間:2019-10-28
九校聯考涼心模擬 \(\text{day2}\)。
\(\text{T1}\) 就是個簡單期望 \(\text{dp}\),結果死活推不出來,白嫖了 \(50\) 分的蒟蒻遞推。
\(\text{T2}\) 神奇的數論推結論然后上 \(\text{CRT}\),也不會,碼了個暴力。
\(\text{T3}\) 一眼 \(\text{LCT}\) 板子,但不會寫,於是上了個暴力+離線樹上倍增。
期望得分:\(50+50+30=130\) 。
實際得分:\(50+20+30=100\),\(\text{T2}\) 卡常沒卡過。
(好像只有我一個人上了 \(100\) 哎)
\(\text{Trie}\) 樹巨佬 \(\text{lsy}\) 又一次用神奇解法吊打了 \(\text{std}\),可惜的是考場上沒調出來。
我真的覺得我的寫法非常簡單,瞬間就想出來了,而且代碼也很好寫,不就是個啟發式合並加樹上懶標記維護動態倍增 \(\text{lca}\) 嘛。—— \(\text{lsy}\)
我好菜啊。
離比賽已經不足 \(20\) 天了,回想起去年的毒瘤題,感覺現在自己去做的話,會做的依然會做,不會做的還是不會。
而據說今年的題會更毒瘤。
唉,等聯賽后就直接 \(\text{AFO}\) 了。
時間:2019-10-29
大部分題都可以用 \(Trie\) 樹搞。—— \(\text{lsy}\)
\(\text{stOrz}\)
時間:2019-11-1 至 2019-11-3
(電腦E盤被打穿祭)
受機房同桌 \(\text{hyj}\) 誘惑,和他一起從不明渠道下了個破解版的繪圖軟件 \(\text{AxGlyph}\),打開看了看感覺還不錯。。。
第二天早上,打開瀏覽器提示僵屍網絡,雖然感到很奇怪,但因為老師已經發下了考試題目,所以就專心做題去了。
(離考試結束還有兩個小時)
題目比較水,閑得無聊又打開了這個軟件,驚嘆其功能之強大堪比幾何畫板。
(下午)
僵屍網絡又來了,突然意識到事情可能不太對,詢問老師又無果,只好換了機子。
(第三天)
周末收假回來搗鼓了一下午,最后讓 \(360\) 危險衛士出面搞死了數以千計的 \(\text{virus.vbs.writebin.a}\) 病毒。
開始計算損失:裝滿了各種軟件的 \(E\) 盤被全部打穿;\(D\) 盤里面的學習資料較為安穩,只有少數幾個 \(htm\) 遭了殃;至於 \(C\) 盤嘛,教練設置的重啟自動數據還原都救不了,才剛開機一小會兒就直接全軍覆沒。
漫長的查毒殺毒過程中,無所不知無所不能的 \(zth\) 巨佬帶着一臉 \(\text{yin dang}\) 笑容走了過來。
等等,放下那只病毒!用記事本打開它,來,讓我康康。\(\text{emmm...[aoturun]...}\) 原來如此。那個 \(\dots\) 你那什么病毒,給我留一份哈,我放到虛擬機里跑一下看看
只見他熟練地打開 \(cmd\),用文本模式打開了一個受到毒害的 \(htm\) 文件,在一長段字符中找到了問題所在,並秀了一波凡人看不懂的操作。
zth 太巨啦!
(晚上)
打包的部分病毒樣本(疑似)和一只可憐的受害者(上面說到的 \(htm\))被保存了下來(預測以后將會成為高級jc的作案工具)。
哎,你說這只病毒可不可以娘化呢?——把我給坑慘了的 \(\text{hyj}\)
時間:2019-11-12 至 2019-11-14
把所有學過的板子都挨着敲了一遍。
【復賽】
時間:2019-11-15
今天居然沒有暈車,頓時心情大好。下午在賓館閑着沒事干看了幾篇論文,不知道會不會派上用途。
時間:2019-11-16(CSP-S day1)
第三次來到這座學校,去年的自閉記浮現在了眼前,唉,希望今年不要再翻車了。
(進入考室)
也許是太緊張了,找不到開機鍵???只得求助工作人員,旁邊的小哥一臉詫異地望了我一眼(唔,好尬啊)
開機后迅速碼好頭文件和快讀,看看時間剛好 \(8:30\),於是抬頭看大屏幕尋找 \(ftp\) 地址 \(emm....\) 地址呢?都已經到點了,為什么還沒有公布啊,難道咕咕咕了?
果不其然,當工作人員拿着 \(U\) 盤依次插入隔壁小哥的主機時我便明白了一切。
應該要等會兒才公布發密碼,閑着無聊花幾分鍾敲了個 \(LCA\),熟悉了下鍵盤,感覺手感還不錯,比學校機房里那個已經老化了的鍵盤好多了。
\(md\) 誰設計的密碼啊,丑死了,輸了無數遍才發現后面居然有個問號,解壓出來后又只有數據沒有題面,喵了眼隔壁小哥,他似乎只有題面沒有數據,搞得我差點笑出聲來。
最后在 \(rar\) 的准備界面里把 \(pdf\) 強行拖了出來,開始看題。
\(T1\) 題面這么長?難道是大模擬?心里頓時一涼,喵了眼 \(T2,T3\),兩個樹論?但 \(T3\) 的數據范圍有點不正常。
回過來看 \(T1\),反復琢磨了幾遍題意,除了要開 \(ull\) 外,貌似沒啥坑點,就是個蒟蒻小模擬,隨手敲了個遞歸(突然發現三次大考 \(\text{day1 t1}\) 都寫了遞歸 \(\text{QAQ}\)),為防位運算爆 \(ll\),還專門預處理了一個 \(mi\) 數組。但不知道為什么寫掛了,調了一會兒發現了個 \(\text{SB}\) 錯誤,一發過大樣例,測了下 \(64, 2^{64}\!-\!1\) 的極限數據,貌似沒啥問題(考完才意識到沒有數 \(0\) 的位數,希望不要掛),看了看時間 \(9:20\),和預估的時間一模一樣,准備開 \(T2\)。
\(emm...\) 鏈的部分給了非常誘人的 \(50pt\),果斷開鏈。問題被放到序列上,首先想是否可以繼承,發現還真可以,直接 \(dp[i]=dp[i-1]+f[i]\)(\(f[i]\) 表示以 \(i\) 結尾有多少個合法子串),想到這里突然意識到:可以直接在樹上 \(dfs\) 的時候順手就把答案維護了出來。雖然平時寫樹 \(dp\) 都是邊寫邊思考,但為了保險,還是往深處仔細想了想,似乎沒什么問題,開始碼碼碼。。。。
問題是如何得到 \(f\) 數組,一開始寫了個棧,但不太好處理,於是換了種寫法:用 \(w[x]\) 表示從 \(x\) 到根的路徑上第一個可用的左括號位置,設 \(W=w[fa[x]]\) 則有 \(f[x]=(W\!!\!=\!0)+f[fa[W]],w[x]=w[fa[W]]\),一發過樣例、中樣例,大樣例崩潰,由於忘了如何手動開棧,果斷上 \(Linux\),順便把 \(T1\) 的數據也拷了進去,測了一遍發現全 \(A\),看看時間 \(10:19\),比預估早了一分鍾。
\(T3\) 鏈和菊花加起來有 \(60\),先想鏈吧,貌似可以貪心,保險起見先打爆捜。\(10min\) 后,開始了漫長的 \(debug\) 之旅(\(md\) 寫個暴力都能掛),大概半小時后發現輸入和我想的不太一樣,改來改去始終過不了,仔細琢磨了下題面,涌起一股想要把出題人錘一頓的沖動.
此時這條邊所連接的兩個結點上的數字將會交換
鬼知道你這里說的 “數字” 是指點權還是節點編號啊!!!害我調辣么久。
過樣例后發現還有 \(45min\),想了想菊花沒啥思路,老老實實開鏈。
喵喵喵?
碼了七八十行發現思路有問題,唉,開考之前就在不斷提醒自己要三思而后行,結果還是太沖動了。
看看時間還剩 \(15min\),這時候應該也翻不出什么風浪來了,於是又把 \(T1,T2\) 撈出來看了看,放到 \(\text{Linux}\) 下再測了兩遍。
\(12:00\),收拾好筆和身份證准備走人,喵喵喵?為什么還不結束啊?難道是要延時?工作人員都不說一下的嗎?早知道就應該把 \(T3\) 再好好想想了。。。
找了找開始界面發現居然沒有掃雷,差評。
出考場后聽學校里一個拿了金牌的高三學長說他 \(T3\) 只打出了 \(25pt\) 的鏈,加起來 \(35pt\),看來這次的 \(T3\) 有點毒啊。
期望得分:\(100+100+10\) 。
\(day1\) 好像人均 \(205-210\),沒有區分度,希望明天能拿個不錯的分數。
還有半個下午 \(+\) 一整晚的時間可以頹,看番去咯!
(晚上)
聽教練說今天的題過於zz,明天應該會柔和一點,考些簡單算法、數據結構之類的東西,對我們來說最容易發揮實力。
時間:2019-11-17(CSP-S day2)
晨起路途漫霜霧,迷惘不知何處。
歸來寒風等閑度,不如心中愁苦。
也許是因為太冷了,今天進考室的時間似乎比昨天早一些。
還是那熟悉的桌面,不過 \(\text{Dev}\) 被昨天下午的小朋友給弄成了一堆亂碼,一時間不知所措,便去詢問工作人員,隔壁小哥又一次向我投來了奇異的目光。
好在昨天存的快讀\(+\text{LCA}\) 板子還在缺省源里面,看看時間 \(8:10\),飛速敲了個珂朵莉樹和半顆線段樹放在一邊,准備打莫隊時解壓密碼公布了出來,於是放下鍵盤去做准備工作。解壓出來依舊是沒有題面 \(pdf\),需要強行拖拽。
今天出題人良心發現給了很多大樣例。
\(T1\) 題目描述比較惡心。看起來和一道二分圖的題比較像,但這道求的是方案數,應該是計數 \(dp\) 。\(m=2,3\) 的情況有 \(64pt\),研究了一會兒碼了個暴力 \(dp\):\(f[i][p][j_1][j_2][j_3]\) 表示考慮到第 \(i\) 種烹飪方法、共做了 \(p\) 道菜、材料 \(1,2,3\) 分別用了 \(j_1,j_2,j_3\) 次的方案數,大力轉移即可,\(m=2\) 的同理,由於 \(j_1,j_2,j_3 \leqslant n/2\),所以不需要優化也能輕松過掉 \(n \leqslant 40\) 的數據。
\(T2\) 首先想到的是斜率優化,但限制條件貌似不太好處理,決定先碼個 \(64pt\) 的暴力放這兒,等拿到 \(T3\) 的部分分后再回來寫正解。朴素思想是用 \(dp[i][j]\) 表示處理了 \([1,i]\) 且最后一段為 \([j,i]\) 的最優答案,時間復雜度 \(O(n^3)\) 。后來意識到可以用一個輔助數組 \(g[i]\) 記錄點 \(i\) 的最優決策點(即最后一段的左端點),直接 \(n^2\) 搞定:\(dp[i]=min\{ dp[j]+(S[i]-S[j])^2 \} (S[j]-S[g[j]] \leqslant S[i]-S[j])\),一發過大樣例,丟一邊准備開 \(T3\) 。
\(T3\) 照着題意隨便模擬一下就有 \(40pt\),愉快地敲完 \(n^2\) 模擬,加上 \(15pt\) 的鏈,\(day2\) \(183\) 到手,加上 \(day1\) \(393\),此時離考試結束還有一個半小時,沖刺一下應該有上 \(400\) 的可能。
目前還有兩個任務需要完成,但由於時間的限制,需要舍棄一部分:
\((1).\) 用一種特別麻煩的蠢方法寫 \(T3\) 的二叉樹情況(\(20pt\))
\((2).\) 嘗試 \(T1,T2\) 可能成功的難點突破 \((36pt+36pt)\)。
猶豫了一下,最后決定放棄二叉樹,畢竟想出正解的回報更豐厚。
可惜的是,對 \(T1\) 容斥 \(+\) 計數 \(dp\)、\(T2\) 斜率優化的嘗試最后都以失敗告終,直到考試結束依舊還是這個分數。唉 \(...\) 虧大了。
退出考室后頓時心涼了半截,今天肯定人均 \(203+\),而我因為貪圖正解分數的肥美,連 \(203\) 的基礎分都沒拿全。
期望得分:\(64+64+40=168\) 。
(后來發現 \(T3\) 數據描述中看漏了 “存在一種 \(1\) ~ \(n\) 的排列 \(p\) 使得XXX” 導致那 \(15pt\) 的鏈也丟掉了,所以只剩下了 \(40pt\) )
總結
\(day1:\) 模擬 \(+\) 樹形 \(dp\) \(+\) 爆捜
\(day2:\) 暴力 \(dp\) \(+\) 暴力 \(dp\) \(+\) 暴力樹形 \(dp\)
期望總分:\(210+168=378\) 。
今年考了 \(3\) 棵樹。
作為一個暴力數據結構選手來說,這本不是壞事,奈何出題人過於 \(dului\),根本不留活路。。。
md 這一年的算法都白學了,到頭來啥都沒用上,去年高一好歹還碼了個最短路,今年居然全寫了 dp。
考聯賽爛成這個樣子,只有退役了。
最后的機房時光在局域網聯機 \(mc\) 中愉快度過。
文化課我來啦!
時間:2019-12-2
咕咕 \(\text{F}\) 終於放出成績了,和預計的一樣:\(378\) 。
雖然分不高,但排名似乎還不錯?
那就 \(...\)
文化課拜拜啦!
\(\text{SCOI}\) 我來啦!