1. 程式人生 > >2014 ACM-ICPC 上海站總結

2014 ACM-ICPC 上海站總結

        2014,上海,這大概是我打的最後一場regional。說實話,打得不像上一場西安站那麼有感覺,下面來說說我的比賽經歷。

        週五,老師開車搭我和殷華去火車站,路上給我們買了水杯和一些吃的,好貼心的感覺可憐。然後我們上了火車前往上海。十點車廂熄燈以後,我很快就睡著了,沒想到夜裡一點醒來卻睡不著了,跑去車廂連線處看了一會書。。到上海之後,乘地鐵去上大報道,有位志願者領著,過程比較順利,盈神隨後也到了。下午熱身賽,題目是1人品題+3不會做的題,聽說是拼模板的,慢悠悠地交了N發人品題終於過了。晚上也是很早就入睡了,和我參加各種比賽時一樣。

        週日早上,準備了幾支筆和巧克力來到賽場。南方的比賽確實有點凍手,體育館裡沒暖氣什麼的。。比賽開始,盈神去敲配置,我正序讀,殷華逆序讀。我讀到B,隱約感覺是水題,就往紙上畫樣例。然後殷華給我說了L的題意,大概是一個有向圖,問最少加幾條邊,可以使得圖中有一條路徑連線所有的點(怎麼聽得那麼像鄙視鏈尷尬

),我聽了之後沒想法。然後盈神上去敲,用並查集搞,後來好像發現不是正解就放棄了。然後我和盈神講了下B的題意,一個網格內,所有格子的中心站著個人,一輛車從左上角沿某路徑開,最終回到左上角,所有人始終保持面朝車子,求他們轉的圈數的平方和。我給盈神說了個思路,就是統計車子在每個人上方和下方往左右方向開了多少次,大概是個二維線段樹或樹狀陣列,盈神也覺得是那樣做,我就上手去敲樹狀陣列。二維的線段樹/樹狀陣列我只敲過一次,也沒帶板子,相當不熟練,很快就卡住了,並且感覺會爆記憶體,就換盈神去敲她的線段樹板子。期間我和殷華討論了一下J,感覺是個很神奇的題目,N支球隊和其他隊伍各比賽一次,勝負和都能得到相應的積分,取前M名晉級,問最高可能的淘汰隊伍積分和最低可能的晉級隊伍積分。因為資料量太大,感覺是需要推一個什麼公式算出來。

        盈神敲完了B,但是沒有過樣例,打了份程式碼讓我幫她查,我發現我看不懂她的板子委屈,我只會樹套樹的那種寫法,只能對著查,然後改了一下能過樣例了,交第一發。。RE。改了下陣列大小,還是RE。很快就發現,資料大的時候會爆記憶體。這個時候時間過了有一個小時了,過題的隊伍寥寥無幾,谷歌爺果然是凶。突然榜上出現一些隊伍過了I,好像當時盈神在敲,殷華在想J,我就去讀I(這是我這場比賽唯一的貢獻,讀了I的題意。。。其他時間好像都是在坑哭)。大概是給出己方n個兵的攻防,對方m個兵的攻防,每個兵只能用一次,打的時候,只要攻擊大於對手防禦就能打死。需要在全殲對方的前提下,儘量多的保留自己的兵。然後很快得出了個圖論的解法:最小費用最大流/二分圖最大帶權匹配,不過感覺時間和空間都不允許,甚至圖都建不起來。我給盈神說了圖論想法,然後建議往貪心上想。盈神覺得可以敲最小費用最大流試試,就上去敲了。

        這個時候,我和殷華交替考慮J和I,然後cha掉了幾個I不正確的貪心方法。突然,我想到B用線段樹怎麼縮記憶體了(其實應該仔細想想然後用樹狀陣列的,效率高不說,程式碼複雜度也能大大降低),並不用開1E6*1E6,雖然不熟練,但是可以硬著頭皮去試試。盈神完成了I(建圖的方法),果斷TLE了。然後就是我上去敲B。。

        這個時候已經快要封榜了,想著來上海不會爆零了回去吧。。我正專心敲著B,盈神好像是吃著東西想出了I的貪心方法可憐。之後的時間,就是我們三個人交替上去分別敲三道題,盈神敲I,我用巨挫的方法敲B,殷華用yy的公式敲J,誰敲完了或者卡住了就換下一個人,好像在執行一個優先佇列。在離封榜幾分鐘的時候,盈神通過了I,桌子上終於飄起一個氣球。我回去繼續敲B,完成之後,開始了漫長的debug。。估計發現的bug不少於15個,什麼語句順序錯,ud變數名寫反,左右移運算子寫錯,漏考慮特殊情況等等各種。。。在最後的二十分鐘左右才通過了樣例。交上去以後返回了TLE。在最後的亂搞時間裡,殷華還把程式碼轉成了C語言,送出幾發提交,全部TLE。。

        最後結果是這樣的,我們很幸運以1題撿了個銅(在此無比膜拜總結中能出現A~L中大多數字母的人),盧學長也出現在了賽場微笑但是大家都沒有激動的感覺,甚至我連獎牌都沒去碰。題目難歸難,區分度還是很好的(銅第一名2題,銀最後一名3題)。感覺自己太弱了。

        不想說再見,這八個月裡,自己的進步還是能看到的。希望以後能夠克服自己不足的地方,比如比賽時候比較心急,程式碼能力不夠強,敲某些演算法總想著有個板子,還有盈神跟我說的應該多讀別人的程式碼害羞。最後我想說的是感謝實驗室給我帶來了那麼多,如果去年校賽的時候不過來刷刷演算法,現在估計好多東西都不會,這段日子應該是我進步最大的時間,唯一的遺憾,就是沒有兩位穩定的隊友,和我一起奮鬥。還是很享受這個過程,享受AC的感覺,我不會停止刷題,就像AcdreamOJ一場比賽的名字一樣,NEVER RETIRE。