1. 程式人生 > >GDKOI2021 爆炸記

GDKOI2021 爆炸記

@[toc] # GDKOI2021 爆炸記 ## 前言 害,我果然還是好菜。 不會的照樣不會,會打的還因為一堆奇奇怪怪的問題錯了一大堆。 ## 普及(Day 1~3) ### Day one #### 比賽 拿到題目先看題。 第一題看了一下,第一樣過去人都蒙了。 啊?這不是普及嗎,怎麼一個表的函式的呢? 然後仔細看了幾眼,發現只要簡單模擬一下然後分類討論就可以了。 第二題,看到題目暴力很容易就出來了。 然後想了想發現要快速求一個點左邊比它高的一個和右邊比它高的第一個。 然後想了想沒想到有什麼演算法。 第三題,想了一會,發現它的資料 $n$ 到了 $1e6$,而且覺得有點貪心,但是還沒有完整的想法。 然後想了一下,就去看下一題。 第四題,一開始看了一會發現了一定是拿全部錢去買通行旅票的性質,然後就陷入和每次都要跑一個圖會超時的思考。 然後就滾去先敲第一題了。 然後看題大概看了 $15$ 分鐘左右。 然後先去搞第一題,因為思路完整,很快就寫出來了。包上檢查細節,大概用了 $20$ 分鐘。 然後先去寫第二題的暴力,就直接列舉兩邊第一個比它高的位置,然後字首和算空間大小。大概用了 $20$ 分鐘。 然後第三題還沒有思路,就先去打第四題的暴力。然後打完暴力想了一下,發現可以離線處理,想弄最小生成樹的樣子,邊按權值排序,然後依次處理出答案。 (這個時候大概是過了 $70$ 分鐘) 然後就去寫,大概又寫了 $20$ 分鐘,就寫出來了。 接著去想第三題,想了想,想到用最大加最小,然後具體的貪心方案也想了出來,就打。 因為比較好實現,弄個 $10$ 分鐘就弄好了。 接著去看第二題,做的時候一時間忘記了可以用單調佇列找序列中第一個比它大的數,然後想來想去,最後用了二分+線段樹來弄。 然後這裡大概又搞了二十分鐘左右。 然後全部打完了,就開始對拍。 首先覺得第一題這麼好弄是不是哪裡有問題,就去弄第一個題的對拍。 這題的對拍也是最好弄的,在生成隨機資料的時候就可以先生成一個正確的,然後隨機一個位置作為答案,然後改一下即可。 結果我比賽時忘了生成隨機種子是 ```srand(time(0))```,傻乎乎的一位是 ```random()```,然後就只能只能通過資料陣列這個值過掉一些數,然後弄成隨機的樣子。 然後在拍第一題的時候就去弄第二題的對拍。 因為一開始打了暴力,就也很快弄好,就把第一題的對拍停了排第二題。 注意,我這裡的對拍沒有看時間,只是看答案。 然後拍第二題的時候就去弄第四題的對拍。 (因為第三題貪心完之後實現很簡單,而且暴力也不知道怎麼打,就直接不對拍了) 之前也是打過暴力,也很快弄好。 然後我就三個對拍輪流跑,一直到比賽結束。 #### 賽後聊天 LYF 第二題用的是堆,然後一堆人全部用的演算法各種各樣。 還說我的線段樹常數很大,不知道能不能過。 然後第三題的貪心跟一堆人對了應該是對的。 #### 下午講題 T1 分類套路,我的沒問題。 T2 結果是用單調佇列來搞,就不知道我的線段樹加二分能不能過。 T3 貪心證實了是對的。 T4 離線沒問題。 然後內心瘋狂祈禱第二題能過。 #### 下午講課 講數論,很多內容。 我拿個草稿本不停記筆記,草稿本上沒位置寫了就跑回去拿個筆記本繼續記。 然後現在正在整理,到時會有一篇部落格出來。 #### 晚上 出成績了,$340$。 ($100+40+100+100$) LYF 和 LXY 兩位大爺反手就 AK 了。 第二題超時了,然後我才發現我打的對拍一直都沒有看超時。 然後就去跟 LYF 這個神仙的程式碼對拍。 然後發現有的時候我確實會超時。 然後 LYF 大爺看了一眼我的程式碼,說:“你怎麼不用快讀快輸呢?” 我:“哦!c!是哦!。” 然後我加了個快讀快輸之後,它跑得飛快。 。。。 我直接哭死。 ### Day two #### 比賽 聽說題目難度會變高,感覺要涼。 拿到題目先看題。 第一題看到有點慌,然後想了一會覺得應該可以找每個數迴圈起來之後最後一個數的週期,然後最後把每個數輪到的週期數乘起來,就可以得到最後一位。 第二題想了一會,感覺思路有點混亂,不知道先約束哪個條件,然後就跳去看下一題。 第三題看了一下題,發現就是走樹上的鏈。然後又是距離,然後直接跑又過不了,然後就想到了用倍增。但是具體怎麼實現還不是很清楚,就去看下一題。 最煩的構造題目,看著題目一臉懵逼。看半天也沒有想法,就先做題了。 看題大概都看了半個小時,人都傻掉了。 然後去弄第一題,打完結果發現樣例都過不了,自己的想法是錯的。 然後就更加慌了,感覺自己今天要爆蛋。 然後除錯了一下,發現 $2$ 和 $5$ 乘在一起會一一消掉。 然後改了一下發現還是過不了。 然後又發現其實可以把不是質數的數拆開,然後只剩下 $2,3,5,7$,二和五再消掉之後再按末尾規律乘起來。 然後過了樣例,自己出了幾個小資料也過了,就去弄下一題了。 然後先去弄第三題,先正常的弄個了樹上倍增。然後想了想,因為要弄距離最小值,我們可以弄到根距離的最大值最小值,然後分類討論一下亂搞,然後就試著打。 但是因為比較混亂,打出來的也不知道對不對,過了樣例和自己出的資料就走人了。 然後去想第二題怎麼搞,想了很久,想到一個方法,就是先按正則二叉樹的規定建樹,然後再看是否是正則二叉樹。 然後去看第四題,一臉懵,只會瞎搞,搞了個全部都是 $1$ 和行列和為 $2$ 的情況,還不知道會不會有鍋。 #### 賽後聊天 第一題對了一下大家都差不多。 第二題大家演算法各有不同,問了一下我的演算法,才突然想起來最後沒有判斷是否是 bfs 序,然後就賊慌。 第三題大家似乎都是用倍增,但我思路糊成一團,應該都是沒有分的了。 第四題好像說可以把圖轉化成只有 $0,1$ 的,然而這樣我還是不會做。 #### 下午講題 第一題沒問題。 第二題好像是一個神奇的演算法,弄成很多棵樹,然後一個一個看放兒子。就不知道我的能不能過(應該不行,因為沒看 bfs 序)。 第三題正解也是倍增,而且想法和我的差不多。但我那垃圾的程式碼實現能力告訴我我應該是不行的。 第四題真的可以把圖轉成 $0,1$ ,然後簡單判斷一下就可以了。 #### 下午講課 講的是概率,海星吧。 #### 晚上 成績出了,$200$。 ($100+100+0+0$) 第二題過了是我妹想到的。 果然,第三題炸了。 然後第四題的部分分還打錯了,我就是個菜雞。 LYF 大爺還自己弄了個 Excel 表格看前兩天分數的排名。 AJ 說明天題目會沒有前兩天那麼簡單。 LYF:我信你個鬼,第一天那麼簡單,怎麼可能比第一天還簡單。 我和 LTH: ![/jk](https://img-blog.csdnimg.cn/img_convert/693aee3254ece4bb83804d5163646cd0.png#pic_left)![/jk](https://img-blog.csdnimg.cn/img_convert/693aee3254ece4bb83804d5163646cd0.png#pic_left)![/jk](https://img-blog.csdnimg.cn/img_convert/693aee3254ece4bb83804d5163646cd0.png#pic_left) 會宿舍的時候,LYF 跟我說明天可能會有 dp、斜率優化…… 因為前面沒有考。 我:普及考斜率優化? LYF:斜率優化其實很簡單。 我:/jk ### Day three #### 比賽 拿到題目先看題。 第一題看是否相似,直接三邊比例相同即可。 想了一下精度可能會有問題,但覺得用 double 應該不會出鍋。 第二題看了一下覺得就是看極限情況,覺得手推一下應該有結論,就沒有管太多。 第三題是數論,大概看了一下就想著暴力。 第四題看起來也很數論,就也想了一下暴力。 然後先去弄第一題,一開始忘了按長度排序,就直接暴力匹配。 (但是這個不是問題) 然後還是怕精度有問題,就弄了個 1e-6。 然後第二題推了一下極限資料,就發現了大概的貪心。 最低就是你永遠零分,比你低的視為跟你一樣零分,比你高的就是滿分。然後每次把滿分分給不同的人。 最高就是你永遠比滿分只差無限小的分數,比你高的是滿分,比你低的是零分。那就儘可能把滿分分配給有過沒有滿分的人,那全部都是滿分的人數就是當時在你前面的人數。 然後就去先把第三第四題的暴力打出來。 然後先去看第三題,一開始看能不能把最後裡面的那一維去掉。 當然,你會發現你可以在列舉到第二維的時候記憶化一下答案,因為第二維可能會多次選到同一個數,而且第一維對它是沒有影響的。 那我們就打一下表,看看結果: $998244353,1,998244353,998244353,1,998244353,998244353,998244353,998244353,1$ 等等,為什麼會有 $998244353$,這個不是模數嗎? 哦,有個地方忘了取模。(國 際 憨 憨 TJH) 把取模弄好之後: $0,1,0,0,1,0,0,0,0,1$ 好像一開始 $0$ 的話是 $0$,$1$ 的話是 $1$,然後兩個 $1$ 之間隔開的距離從 $2$ 開始每次增加 $2$。 打個程式驗證一下,發現是對的。 然後再一看,發現這個就是平方數的位置是 $1$,否則是 $0$。 那弄回去一看…… 兄嘚,這個不就是求 $1\sim n$ 中每個數有多少個平方數因子,然後每個個數的和嗎? 然後就火速實現。 然後去搞 T4。 想了想 LYF 大爺的話,想到可能是 dp。 然後想到一個十分暴力,可以說是 $n^5$ 複雜度的暴力,然後一看資料範圍,好像能過挺多的點。然後就去打。 結果大資料跑得飛快,自己弄個了極限資料,也過了?! 然後就開始搞對拍,由於前兩題似乎不太好弄,就只弄了三四題的對拍。 因為打過暴力,所以也很快。 然後就看著對拍等結束。 #### 賽後聊天 好像也沒聊啥特別的。 #### 下午講題 第一題證明方法是對的,但是說因為精度問題要化成最簡分數的形式。 危 TJH 危 第二題大致的方向是對的,但是它的具體實現好像和我的不一樣。 第三題數論推對了。 第四題就是 $n^5$ 的 dp。 #### 下午講課 將的是凸包。 有個初一的在講課的時候當場把模板切了。 我好菜,我可以退役了。/kk #### 晚上 成績出來,$355$。 $85+70+100+100$ 果然,前兩題出鍋了。 第一題應該是精度問題,聽說改成 long double 然後 $12$ 位精度就可以過。 血虧。 第二題應該是實現的問題。 明天就要提高,想想普及的噁心難度,我覺得提高要涼。 ## 提高(Day 4~6) ### Day four #### 比賽 先看題。 第一題就是一個構造題,一臉懵。 然後想了想,可以每次選當時度數最大的點放到另一個集合。然後大概這個方法搞搞。 結果一看只能過 $20$ 分的。 然後看第二題。想了一下,想了個 $n^2$ 暴力就滾了。 然後第三題,看到迴文串就想到 hash,然後就想到了 $n^2$ 演算法。 然後第四題,看到題目一臉懵,然後看了看資料,好像也就 $k=0$ 能做。 然後就先弄先把前兩題暴力寫出來。 然後寫第三題,就寫 hash+二分那個。 然後把第四題 $k=0$ 的情況水了。 然後發現第二題可以把每個點高度被選為最大值時貢獻排序後的連續部分一起過掉。然後就打了一下。 然後想了想第一題的二分圖應該也可以試著做一做。 然後就去弄。 然後弄完之後只剩十多分鐘,就檢查了一下,就結束了。 #### 賽後聊天 LYF 神仙竟然只寫了一題,不過是正解。 LYF,永遠的神!! ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210208153038875.gif) #### 下午講題 第一題似乎是 LYF 神仙的做法,sto LYF orz。 第二題跟我的想法差不多,但是它可以提前處理出來,然後用二分,然後就可以不用每次都找一遍,只用二分一下弄一下就可以了。 第三題好像是用馬拉車,但是 hash 也行。(當然還要別的,這個只是說判斷是否迴文)然後好像要二分,然後還要用 ST 表來維護之類的玩意。 第四題,好像要生成函式,然後又要化式子,一頓操作比例巴拉的。 #### 下午講課 講擬陣,非常懵逼。 一堆英文,然後念 PPT。 好像一直聽下去並且聽懂的只有初一的 WCR 大爺。 (又是初一的,我可能該退役了) #### 晚上 出成績了,$180$。 ($100+50+30+0$) 第一題過了是我妹想到的。 我好像大於 $20$ 的情況都是當二分圖來處理啊。 然後好像很多人用二分圖的演算法過了這道題。 LYF 血虧,慘。 ### Day five #### 比賽 先看題目。 第一題,好像在哪裡見過…… 反正就是推方程嘛,讓我想想方程啊。 忘了,那重新推吧。 (那時的我仍沒有意識到事情的嚴重性) 第二題,大概想了一下,發現可以用線段樹維護一下一直向前跳。 大概是 $n^2$ 演算法。 第三題,看了一下覺得可以 hash 加貪心。 至於第四題,看了一下打算直接暴力。 然後推第一題的式子,推了個樣例過了的。 就不管了。 然後第二題打線段樹。 也把第三題貪心了一下,結果發現我的貪心有問題。然後想了想,打了個部分分 dp。 然後第四題打暴力。 #### 賽後聊天 我:對一下第一題的方程。 LYF:啊?第一題不是做過嗎。 我:我忘了。 LYF:你自己看。(開啟部落格) 我:(看了眼方程)耶!推錯了呢! LYF:這個不是做過嗎,那你還錯? 我:我是廢物啊!(神志喪失ing) #### 下午講題 第一題。。。 沒事了,我是**。 第二題大概的想法差不多,但是它的實現比較高階。 第三題確實是 dp,但是要想要用堆來縮短一下時間。 第四題,好像是要把操作轉成上浮的,然後再做就會好做很多。 #### 下午講課 將的是有關隨機的。 一開始還聽得懂,然後就逐漸蒙圈。 然後就變成了半掉線的狀態。 (當然,初一神仙 WCR 肯定是全程聽完了啦) #### 晚上 分數出了,$120$。 ($0+20+70+30$) 我就知道第一題沒好事。 LYF 神仙反手就切了第一第三題。 ### Day six #### 比賽 先看題目。 第一題看了一下,覺得自己不會暴力。 想了一下因式分解,覺得勉強能水點分。 第二題想了想,弄出了個 $n^2$ 暴力。 第三題想到暴力模擬,然後一看資料發現一個都過不了。但是覺得只有一個細胞開始的可以試著推規律。 第四題,題目都看的一臉懵,就打算水部分分。 第一題試著弄了一下暴力,然後打出了第二題的暴力。 然後去看第三題一個細胞怎麼弄,然後弄了一個多小時弄出了規律,就打了上去。(結果還是不能過一個細胞全部資料) 然後去看第四題,也不知道寫哪個部分分。 就打了個分成兩個集合的,也不知道對不對。 #### 下午講題 第一題好像確實要因式分解,然後一堆噁心分類討論。 第二題好像要 bitset 優化, 然後又 FFT。 第三題好像是要探究出一個異或的東西來確定當前時間某個點是活是死。然後又要通過容斥來算個數,然後再弄一個數位 dp。 第四題好像還要資料分治,分成兩個集合的那個資料點時二分再弄一堆東西。其它的好像有一個是最小生成樹,還有一個也是二分,但好像還有證明一個東西,然後再搞。 #### 下午講課 講多項式。 開局一個 FFT,中文名都不知道的我直接裂開。 然後啥都不知道,就只能看看它證明的過程。 連證明的前提條件和證出來了什麼東西,是幹嘛的都完全不知道。 害,我太菜了。 #### 晚上 雖然下午就出成績的但還是寫晚上吧。 (不要破壞隊形) 分數是 $85$。 ($10+60+15+0$) 海星,但第二天的第一題讓我徹底炸掉了。 ## 總結 海星,但是還是很爆炸。 各種奇妙掛分。 快讀、精度、期望。 最不應該的是做過的題都能錯。 不愧是我。 不過有了這次的慘痛經歷,下次比賽都會加上快讀,好好看精度,好好推式子,不要依靠垃圾樣