1. 程式人生 > >Noip2017 滾粗記(Last update 11/16)

Noip2017 滾粗記(Last update 11/16)

我擁有何物?如此詢問道
僅僅只有白紙一張
那大概是
為了以自己的畫筆描畫而準備的
最初的一頁

擡頭所見的青空 鮮豔地映入眼簾
如果可以的話好想就這樣
試著讓這顏色 將自己塗染

在那無盡延伸的天空彼方
等待著嗎 我所探尋之物
比昨天再向前邁出一小步
現在,伸出手來吧

—— Hatsune Miku

Day -2

(別人在半期考試)
連續幾次考模擬賽的成績不是特別理想,講完正解又覺得自己好傻,為什麼這麼簡單的題我就是不會做呢(我是怎麼考進來的)?直到晚上才想起來應該把去年的題過一遍……
然而發現去年的題對來說太難了,連組合數都沒有想到用二維陣列儲存答案,玩具迷題都搞不出正解:(

Day -1

(別人還在半期考試)
最後一次模擬賽,結果還是靠第三題水了100分

T3題目大意:輸出你期望的noip分數

讀完題目挺感動的(是指的出題人的獨白),當時我好像是胡亂輸出300(霧)
下午和晚上又去刷去年的題,天天愛跑步居然水了80分,十分開心。

Day 0

(別人仍在半期考試)
教練說今天上午可以不去學校,我本來七點鐘被叫醒,在和母上大人一番和平友好(死皮賴臉)的交涉後,我又回去睡到了……也許是十點吧。
中午吃了金拱門就趕到學校去,趕上教練發准考證和宣讀壯士出征前最後的提醒(當然還是那些常用的套話啦,什麼開檔案啊,放在哪個哪個資料夾下啊,不要走錯校區啊,這些我們都知道)。
散會後,跑到隔壁機房去熟悉了一遍虛擬機器Linux下的編譯,沒有想象中的那樣困難。
然後把半期考試網上閱卷的流程熟悉了一遍。


下午回家倒頭又睡,母上大人催了好久才起來,然後她駕車約莫一個多小時,終於到達了電子科大旁邊的酒店。
教練說最近幾天要吃清淡一點,於是晚上吃了烤魚(挺香的)。
晚上又開一次會,教練強調了a.要搞清楚自己的知識水平,區分自己哪些題有把握,哪些題只能上暴力; b.考前先通讀題,仔細分析不出來; c.不要貪; d.不要讓Day1影響Day2; e.才高一,體驗考試。(對我這種蒟蒻來說很有道理)
很早就睡了,但是由於生物鐘,還是清醒了好一陣子才睡著。

Day 1 賽前

日常七點起床(酒店餐廳十分小,早餐十分難吃)。
八點多進了考場,把身份證放在准考證上,准考證放在右上角。後來尋思著監考老師要檢查證件,於是欲將其轉到左邊。直接去提准考證,然後身份證直接掉進了桌子縫中(桌子推不開的,我試過)。當然監考老師是很和藹的,而且答應下午幫我取出來。
八點半領了題包,太興奮、太激動害得我輸錯了三次密碼。

Day1 考試

T1在某本書上看到過結論,5min結束(想著在考試,就沒有嘗試去證明),應該是100分。

T2一看就知道是大模擬。先把輸入給處理了,我全文是用的getchar()讀入,由於有很多的空格和換行,所以在讀入這裡處理了很久很久(三四十分鐘)。輸入搞完過後開始想for迴圈的各種情況(感謝樣例提供了兩種我沒有想到的情況)。然後後面就很簡單了,各種情況全部判過去。然後我又發現我不能在中途直接輸出ERR然後continue,因為這樣會影響後面的讀入,於是開了個布林值來判斷是否輸出ERR。後來在大樣例發現有可能E比F少的情況,趕緊加上去。然後還是死活過不了大樣例,打了一大堆除錯語句才發現當x或y為n時我會把它賦值為-1,結果造成n反而比常數小的尷尬局面。看到大樣例過了,我也就放心了。期望100分。

T3看上去有點難辦了(對我來說)。先跑一遍SPFA把最短路找出來,儲存每一個點到起點的最小距離(far陣列)。然後DFS,如果當前距離比(far[當前節點]+k)還要大一些,就return(理論上可以剪一大堆枝)。每一次到達終點就ans++(不能return)。期望30~50分吧。

Day 2 賽前

非正常七點起床(週日習慣了九點起床)。
監考老師把身份證還給了我(好開心w)。
八點半領了題包,今天很沉著,只輸錯了兩次密碼。

Day2 考試

T1在雅禮時做過一道類似的題,不過那個是二維的(沒毛病)。直接兩兩列舉所有點看能不能互相聯通,能聯通的就連一條雙向邊(兩條單向邊),最後從上往下跑一邊BFS即可。但是卻忘開long long(哭給你看)。期望80分。

T2貌似有點複雜了。看到n的資料範圍那麼小,於是就想到了狀壓DP,但是並不知道怎麼轉移……然後便開始了列舉之路。我是列舉以每一個點為起點的最小花費,先將每一個點的權值(權值表示從其周圍已經連線到起點的點到達這個點的最小花費)賦為超級大。使用BFS(我是不是BFS用太多了?),每一次看能不能更新權值,能更新就更新。小樣例隨便過,大樣例輸出300多(十分慌張)。接下來發現原來有可能兒子更新父親,這是很不妙的,加了個判斷上去。緊接著大樣例輸出440,我查看了大半天沒有發現毛病(特別慌張),看到時間還剩一小時多的時候,馬上去擼T3。

T3恐怕已經不是我能理解的了(誇張)。發現對於大部分資料,整張表是沒法儲存下來的,然後各種想怎麼存(樹狀陣列?線段樹?平衡樹?),反正想不出來。於是只打了暴力(n<=1000&&m<=1000的情況和n==1的情況)。期望30分也知足了。

回來繼續T2,最後終於發現了自己的問題:一個點的深度是父親的深度+1,可能在前面父親的深度很小(但是權值很大),於是乎這個點的權值也就被欽定了。接著後來父親的深度變大了(但是權值反而減小了),這個點的權值卻不會再改變……這就是為什麼比正確答案小。此時只剩下一刻鐘了,胡亂除錯,也沒管輸出了447,就匆忙結束了比賽。奇怪的搜尋期望30分。

Day 3

回到教室,認識同學。
裝作聽得懂然而並聽不懂老師講的什麼。

Result

期望370分,不容樂觀

Future

希望明年能考470分