1. 程式人生 > >noip2017頹廢記

noip2017頹廢記

err 字符 不能 意思 linu 發現 開始 也好 linux下

作為一個從初中就開始學信息的蒟蒻,自然要去提高組了~~~  
比賽前day1

跟平常一樣在機房頹廢著,上午在洛谷看到了站長大人的忠告後,看了看模板題,發現沒幾個會打的(正常)。

下午想一想發現自己的dp垃圾的不行不行的,於是去看了看自己以前寫的dp,順便寫了幾道普及級別的dp,有幾道還不怎麽會寫,感覺自己要完蛋了。。

晚上早早地就睡了,一直在床上回憶模板,半夜一點左右發現自己主席樹模板不記得了,方的要死,翻身下床看了一波,總算可以安心睡覺了。
day1

早上在車上看了看昨天晚上寫的vim配置和Linux下的對拍(比windows下的好背多了),順便背了一下前天剛學的神器pb_ds(聯賽用了好開心,hhhhhh)。

再日常祭天(alb)之後就進考場了。

幹坐半小時後,題目終於發下來了,先用半個小時左右把vim配置打完了,調了好久一直re,最後發現少打了個分號。

好不容易弄好後開始看第一題,本來我以為提高組第一題會像以前水的,看了眼樣例,以為是a+b+1,結果大樣例不對,瞬間崩潰。

後面我發現,可以把大數y寫成kx+b的形式(x是小數),然後考慮余數b對答案的意義,因為b只有大數可以提供,所以要答案盡量大的話,b最多可作出(x-1)的貢獻(再多的話可以用小數來表示),但是當有(x-1)個b時,必定會出現k*(x-1)個x,所以再減去一個x就必定湊不出來了。寫了個背包對拍了一波發現沒有毛病,大概半小時解決了第一題。

看到第二題一開始覺得不可做,字符處理太麻煩了,又看了眼第三題發現第二題貌似easy些,就硬著頭皮暴力模擬了,開個棧維護一下變量名,記錄一下最大時間復雜度,最後沒有err的話就與答案比一下即可。

註意幾個細節:

1.要考慮 “F n n”的情況。

2.要標記進不去的循環,在這個循環出棧前所有的循環都不會對答案作出貢獻。

3.會有多個獨立的循環加嵌套,我們需要記錄時間復雜度最大的那個。

不知不覺寫了一百三十幾行,感謝大樣例測出了程序幾個小bug,第二題也順利解決了。

來到第三題,還有一個小時左右,先寫了個暴力搜索(考場上以為有50分,出來後發現只有十分的,結果ccf給了30,happy~~)

想了一會覺得就是個縮點+拓撲dp,於是打了個縮點,結果重新建圖是出毛病了,又一想發現我想的dp不好寫,於是就放棄治療了。

於是第一天 100+100+30

出來發現機房幾個dalao第一題寫的拓歐,第一題是真的坑。

第一天感覺還行,只是沒有樹剖題,沒意思
day2

前天晚上終於睡好了,今天在車上沒有睡覺。又看了看配置和dp,就進考場了。

拿到題目,t1比昨天水多了,看兩眼秒掉了,不過好像極限數據有坑,會爆long long,沒考慮到,幸好ccf沒卡我(6666),有驚無險地過了。

看了看t2,按照套路,先打了個bf,發現dfs打錯了,小樣例都過不了,果斷刪掉了。看了看數據範圍,覺得和去年憤怒的小鳥一樣,果斷寫了個狀壓dp,發現大樣例過不了,比答案小(生無可戀,原地爆炸。。。),又讀了讀題,發現點毛病,又開了個數組記錄了一下樹的狀態。過了大樣例,就沒管了。

t3一看就不會寫正解,先把前三十分騙了,看一下特殊數據發現只有一行的情況可以塞到平衡樹裏,每次詢問第k小就行了,開心的把pb_ds搬了上來,搞定!!!

之後一個多小時一直在思考t3,試了樹狀數組,差分之類的,但沒搞出來,day2就這樣結束了。(後來出來機房dalao跟我說詢問很少的那20分也好騙,當時沒想到)

第二天最後 100+100+40
後續

出來之後聽同學說不能用下劃線開頭的命名空間,想起自己的__gnu_pbds,感覺自己藥丸。

回到學校想了想發現寶藏這題好像並不具有最優子結構的性質,完了完了

回頭把day2t2交到洛谷上結果過掉了,還跑得賊快。(事後發現出錯率極低,隨機個幾千組才會錯一組,無法理解)

總之這次noip達到了自己的預期目標(400+),繼續加油。

noip2017頹廢記