小學生日記:
2019.10.13,哈爾濱,打了個銅
開頭
先說結論,這次失敗,我的鍋70%,sdl的鍋5%,ykh25%
Day0
周五,
我們隊出現了奇怪的厄運上身
首先是我中途在飛機上數據線突然出現在前面座位上,下了飛機發現數據線丟了(
然后ykh的羽絨服被刮掉了一堆毛
后來sdl比賽的時候也一直激動地拉肚子上廁所
本來我是十分反對今天去吃東北菜的,但是還是架不住餓的誘惑,吃了一盆鍋包肉
Day1
哈爾濱真的是冷的一筆,我們出發去東北林業大學
學校很大很豪華,風景很美
和女隊一起報道完拍了照,就去學校食堂掛機等熱身賽了
我隊的特色一直是ykh從a讀到z,sdl從z讀到a,我有代碼敲代碼,無代碼讀最短的(畢竟六級沒過)
熱身賽開始,我先上機敲完了頭文件,ykh此時看懂了A題並告訴了我
然后一通操作過掉A題,此時rank40+
這個時候ykh和sdl都在看B,並且好像有哪一句話沒有看懂,讓我讀一遍看看題意
我看了一遍居然直接看懂了並且腦子過了樣例,跟隊友講了一遍就上機過了
此時rank大概銅首,問了下隊友c題意,我直接說出了算法並且上機
這題細節有點多,我敲代碼的時候出了不少問題,隊友正在口胡d題
過了樣例之后直接交就過了,此時大概rank仍然是40+
然后討論了一會d題發現不可做,就開始了愉快的吹b時間
此時sdl和我爭論c題的出處,我就讓他上機測試java以及各種c++奇怪的東西之后自己寫一下c體驗一下
當然后面沒寫出來
另外ykh對我說:明天f題肯定是簽到,你信不信
打完熱身賽,我們站在東北林大門口等車的時候,我說“不知道明天這個時候我們是怎樣的一種心情”,大家沉默
后來我們得出了一致結論:無論如何,銅的話太丟人了
Day2
依舊的寒冷,隊友早上似乎十分緊張,一直拉肚子
我們剛開始叫的車還在來的路上被人蹭了,司機估計在和人干架,就叫我們取消了訂單。。
另外正式賽賽前兩分鍾,sdl還在廁所里,還好在倒計時前及時回來了。。
正賽開始了,我依然是上機敲頭文件,敲完之后隊友還在看題
我瞟了一眼,ykh居然在看真的在看F題。。。我就去看了最短的I題,發現題意比較簡單就跟ykh互相交換了一下題意,
F題直接就出了算法,我就開始敲F了
敲了一半,隊友告訴我I題特變簡單,隨便特判一下,我就先暫停F過了I題,
然后繼續F,因為很久沒寫狀壓了,敲完沒過樣例,叫sdl過來幫我看代碼,改了一下初值,就過了
然后看了一下榜,有點懵:I和K綠了一大片,F題沒綠多少,我們反向簽到了
這個時候讓隊友趕緊去做K,ykh推了半張紙的公式,被sdl看了一下樣例猜了一下公式秒掉了
繼續跟榜開F題,雖然還是簽到狀態,但此時已經是大家一起集火這一題了
我和ykh各出了一些假算法和一些數據,sdl講了一個我們沒人聽懂但是能過已知數據的做法
果斷(莽)讓sdl上機寫自己的思路,ykh幫忙解決了許多代碼問題(sdl讓此處對ykh提出特別表揚),然后交上去1A
此時1h50m,我隊4題均1A,但是由於過於求穩,時間比較慢,rank上是銀尾
開了E題,我先把這個問題分解了子問題,然后和隊友逐個討論解決子問題的可行性並證明復雜度
發現復雜度大概O(n+k+nlogn),n,k<=1e6,通過昨天熱身賽測的評測機感覺能(卡)過,就開始了不歸路。。
在ykh的監督下,大概30m敲完代碼,過了樣例,交上去,T,1300ms/1000ms
這個時候看榜發現沒有其他題可以做,果斷打印代碼和隊友一起看
中間上廁所,發現吉老師居然在我旁邊(后來每次想到這個畫面都會熱血澎湃)
我告訴隊友,現在有幾點可能性:1.復雜度分析有問題 2.代碼寫的不是這個復雜度
冷靜分析后(后來發現並不冷靜),我們認為復雜度分析沒有問題,就開始一起看我的代碼
我們不知道數據有沒有跑完,所以先進行了一些卡常
中間經過了漫長的過程。。優化掉了3個O(n),把快讀改成了出題人給的快讀,交上去后,T,2200ms/1000ms
眾人傻眼,這時候ykh認為我的dfs炸了,我讓他講一下為什么,他沒有講明白(我沒有聽明白),還反向說服了他
封榜后我們感覺nlogn也許根本就過不去?然后我們就構思O(n)的方法:最后求的是出現最多次數的數的出現次數與sum/2的關系
ykh說:求眾數
我說:對啊,求眾數有一種O(n)的方法,(就是bzoj2456,我和ykh之前討論過這個問題),擴展一下搞在這個題上不就完事了
后來的事實證明,題解的O(n)算法這個時候其實我們已經出了
因為我還沒想好細節,而sdl此時又出了一個我們沒聽懂的實現,我就讓他上機了
sdl在我的代碼上改了改,debug之后過了樣例,交上去,T,2200ms/1000ms
眾人再次傻眼,此時比賽僅剩1m,銅首
賽后大家分析了一下這兩份代碼,是dfs炸了,但是又沒人能解釋為什么,因為表面上它沒有任何問題:一棵樹n個節點,葉子節點上有序列,序列長度的和為k,dfs它的復雜度是 O(n+k)的
Day3
今天晚上,我們拿着比賽的代碼開會分析,
分析到了這個dfs后,我讓ykh再講一下當時反駁我dfs的時候,他構造出了一個圖:這根本不是一棵樹
wdnmd(恍然大悟)
這其實是一個DAG,dfs的時候用dag的方式處理即可
總結
分鍋過程如下:
我作為隊長,前四題策略出現問題導致罰時較高,作為主代碼手沒有理性分析E的代碼復雜度,隊友提出質疑沒有特別在意,占鍋70%
ykh其實知道這題我們最后差的關鍵所在,但是隊友交流上出現了少許問題,當時沒有講清楚dfs出問題的關鍵原因,占鍋25%
sdl其實不該有鍋,但是在我建出樹的模型的時候其實該跟他說的,但是他又在廁所。。然后最后改我代碼的時候賽后發現了一些bug,勉強占鍋5%
可以看出,我隊交流上出現了大問題,如果我們三個人是一個人,這題在2h30m的時候就該過了(賽后得知nlogn也可以過),所以並不是硬實力問題(?)
而是隊伍訓練太少,所以經過合計,我隊將加大訓練強度
dbq,這次讓關注我們的人失望了
勉哉耘其業,以待歲晚收。
下次會繼續加油的