1. 程式人生 > >2017 ACM-ICPC 南寧站 總結!

2017 ACM-ICPC 南寧站 總結!

2017 ACM-ICPC 南寧站 總結

 滾完榜後還是有點遺憾,封榜後竟然這麼多隊過了6題,雖然銅牌是穩的,但沒有時間去寫H題,反而把M題做出來了,喪失衝銀良機。

 Day 25

 中午到達南寧,外面在下雨,出火車站直接就是地鐵站了,兩站到達廣西大學,然後淋著雨找體育館報道,領完東西時間還夠,正好飯點,不過食堂瀰漫著一股的氣味(酸竹?),一張餐票一份盒飯,胃口不是很好,賓館離學校有點距離,吃完了就直接去體育館等開幕式了。體育館竟然比外面還冷,背後時不時吹來一陣陣冷風,預示著涼涼?開幕式的時候已經凍得發抖了,不自覺地在流鼻涕,參賽服竟然是8月份邀請賽的衣服,心灰意冷。熱身賽開始前兩題題面很長,然後繼續往後翻,C題掃了一眼題意,求四個數(不超過四個數)的和不超過的M的最大值。沒什麼想法,把題意扔給隊友,然後隊友說後面還有一個題,我去,然後去看D題了,掃了一眼發現是個水題,C題隊友很快出思路了,然後D題也確定了,我回去讀AB題了,一眼不可做的樣子,讀了會B題發現晦澀難懂也不會,然後切A題了,C題隊友寫了一會然後測樣例,我們又出了幾組樣例,發現一個細節有問題,又掃了一眼題意發現是不超過四個數相加,隊友沒有去確定題意,然後我直接先上去寫D題,隊友下來討論,一會他們就調整好了思路,D題也寫出來了,測試後沒什麼問題交上去半天才回來一個YES。我繼續讀A題,隊友修改C題,不一會也好了,不知道他們什麼時候交的應該是YES了,然後就看到他們開啟榜單發現竟然金牌第8,eee。把B題跟他們說了一下是個不可做的題,然後把A題告訴他們了,另一個隊友測試java,我們討論A題,資料範圍不大,但資料組數較多,隊友說floyd可以寫,然後他開始打,我繼續想,後面理解了他的想法,感覺沒什麼問題,把題意和另外一個隊友說了,我就幫隊友寫A題,細節處理我們想的不一樣,但程式碼是他在寫,於是我就按著他的想法幫他修改,順便出出樣例,寫了一會測試樣例debug,然後測試我出的樣例,發現了bug,然後停下來修改,我提了一種方案,但感覺像是湊樣例,說不上對不對,後面不知道他們怎麼想的又覺得是正確的,然後繼續debug,測測樣例感覺沒什麼問題了,提交半天返回個WA,然後申請列印程式碼,結果快結束的時候才送過來。。我們也不知道怎麼會錯,時間剩下不多,也就懶得寫了,直接測試環境。熱身賽打的很隨意,不過舉辦方應該是沒什麼經驗,開場給對面送來一個氣球,人家沒有過題,我們過了兩個題結束也沒見到氣球,列印程式碼很慢,志願者一問三不知,中途電腦還卡頓了很久,旁邊隊伍說CE榜單上也算上了罰時,而且提交沒有返回結果,卡在PC^2裡了,榜單也是錯誤的。各種問題。。晚飯後回賓館兩個隊開了兩間房,我們直接把兩張床合併瞭然後去問前臺要了一幅生活用品,又問清潔大叔要了一床被子和一個枕頭,感覺大叔人真好哇。晚上訂好了回去的車票,也沒商量什麼策略,來直接訓練了很久,狀態還行,之前打的幾場比賽我們該調整的都調整了,所以也沒什麼說的了,最後一場就放手打吧。

 Day 26

早上很早起來吃早餐了,外面沒有下雨,排了很久的隊辦理退房手續。到體育館快50了,剛坐下舉辦方就宣佈開始發放試題,ee。題目也沒有封裝,直接可以看題,然後A題掃了一眼,題面很長,往後看了看沒發現什麼簽到題,先讓隊友配置環境,A題感覺應該很水,把樣例理解了一下發現不難,直接上手打了,比賽還沒開始,打好了測試樣例感覺沒什麼問題,場上很多人過了然後也直接交了,一會回來個WA,我馬上去看題,隊友幫忙看程式碼,發現少打了個字元。。。改回來後交上去返回Yes。然後刷了一下榜單,發現L題和M題都有人做,L題題意很短,開場隊友就在看了,隊友讓我去看M題,他來打L題規律,但F題好像過的人多,然後我去看F題了,題意很快明白了,發現樣例很有特點,模擬了一下,發現規律了,要用大數預處理,隊友直接上java,我回去看M題了,寫了有一會表打出來了,隊友沒交過java,於是把表粘到codeblock裡面,再處理了一下,測試樣例,沒什麼問題後交上去返回YES。隊友繼續打表找L題規律,我把M題題意告訴另外一個隊友,然後解釋了樣例,我覺得就是一個裸的最小路徑覆蓋,但得用floyd預處理一下,看了看時限,可能會超時,榜上也沒什麼人過,於是開其他的題了,榜上J題過的人也多了起來,於是開J題,題意也很快懂了,我和zp來攻,另一名隊友用java去打表,J題感覺不難,可能細節需要處理一下,我們在最優策略上商量了很久,大致思路有了,但細節還是不好處理,我們可能想複雜了,我把情況列出來,發現很好寫了,但隊友出了一組樣例說有問題,我們又不知道怎麼處理了,隊友的程式碼寫的有點複雜,我感覺不是這樣,然後把我的想法和他討論了一下,程式碼很好寫,幾個if else判一下就行了,但隊友在一種情況上存在糾結,他覺得不是這樣處理,又修改,我把之前的樣例推了推,發現也是可以處理的,然後把程式碼又改了回來,樣例測試都沒什麼問題,提交上去返回YES,這個題我們做了很久,細節考慮得太複雜,然後繼續找L題規律,隊友把表打出來,發現預處理不可行,資料太大太多,但我發現隊友的打表打錯了,資料範圍用錯了,然後改回來跑出來的結果很少,這樣就可以預處理了,但是得找到遞推式,一時半會也沒找到,但榜上過了好多隊了,我們排名很靠後,隊友讓我打M題,反正電腦也是閒著,於是他們找規律,我直接開始打,也不知道想法對不對,但感覺很正確,估算複雜度最壞可能會超時,被上場杭州賽區的卡常卡出陰影,但是優化一點也許能過,程式碼一會也寫好了,測試了各種樣例都沒什麼問題,就想著交一發試試,也不奢望能過,然後直接把程式碼列印下來了直接離開電腦了,過了一會返回個YES,真是出人意料,開場就知道做的題卻一直不敢寫。。。看了看榜竟然在銅尾,難道要像瀋陽賽區那樣了嗎。L題規律必須做出來,我們三個人一起推,應該是這個時候我發現表打錯了吧,然後把打出來的結果申請列印下來,看了看榜I題不知道什麼時候過了80多個隊了,不知不覺就過了這麼多隊,於是我立刻去讀I題,是個博弈題,資料很小,沒思路,於是跟隊友調整題目,他們兩個去攻I題,我來找規律,找了一會沒發現什麼規律, 倒是他們很快就確定了I題怎麼寫了,然後立刻上手打,我不是很放心,於是讓他們兩個人一起,我繼續攻L題,突然發現差值序列的規律了,這樣就可以預處理ans序列了,然後驚呼一聲我知道了便去上廁所了,回來隊友還沒懂我的想法,然後和隊友說了一下,隊友不是很明白,讓我用公式列出來,當我用公式的時候卻發現同時相減竟然消掉了,只知道關係,還是無法確定數值,I題他們打出來了,然後測試樣例,我胡亂造了幾組也不知道答案,測試感覺沒什麼問題果斷選定提交,一會返回YES,銅牌穩了,看了看榜銅牌區上游,再做一個題可以衝銀了,於是我們一起攻規律題,全場題竟然卡我們這麼久,隊友理解了我的想法,但是這樣還是行不通,看了看榜發現H題不知道什麼時候又過了80多個隊,也是神奇,悄無聲息的感覺,於是隊友讓我去讀H題,不能再一顆樹上吊死,封榜還有幾分鐘,在做一個題完全有可能,況且過了這麼多隊了,我去開題了,順口說了一句把兩個序列加起來試試,然後隊友就找到規律了,理了理確定了完整思路立馬上手寫,還是要用到java大數,隊友催我快點讀題,這個題已經穩了,我倒是有點不放心,他們入果穩穩的把那個題做出來就很不錯了,就怕被卡住,我們罰時多很可能被擠出去,H題題意也不太明白,很迷,只能一個單詞一個單詞查詢,理解,但心完全放在他們那,還是之前的方式,用java把表粘到codeblock裡面,然後用C++提交,這樣雖然耽誤時間,但是更穩。規律沒錯,程式碼很快也寫好了,調調改改,然後各種測試,基本沒什麼問題,還好隊友沉住氣了測試最後一個數據的長度,發現有問題,原來沒粘完全,於是又改了改,測試後都沒問題了,我還是比較囉嗦的強調了一下陣列大小、資料範圍、輸入輸出等等細節,隊友說沒問題了,然後選定提交,很自信的返回了YES。這時封榜已經20分鐘左右了,然後算了算罰時800多,銀牌沒戲了,但銅牌區靠前還是可以的,H題我直接就不想做了,題意很迷,但時間又剩了40多分鐘,然後把題意一個一個翻譯給隊友,但我們都已經放鬆下來了,開始吃麵包了,翻譯過程也很艱辛,我實在理解不了,也不好怎麼和隊友表達,樣例也迷,關鍵點就強行給隊友說了意思,然後輸入輸出隊友讓我再解釋一下,我還是不明白,隊友說10分鐘題意,10分鐘程式碼,雖然感覺很好笑,但我們也不好直接放棄不做了,於是繼續理解,隊友說是個sb題,然後強行理解的輸出,我倒覺得沒這麼簡單,很多隊很快過了6個題,但第七題很久沒出來,我覺得也不好寫,但我卻忘了他們第七個題是卡再哪個題上了。。另外一名隊友說想用java測試一下,因為沒交過java,我們也沒阻止,H題隊友直接上手強行寫,我倒有點放鬆了,我覺得題意可能沒有這麼簡單,這個題可能不是這樣的。也不知道時間怎麼過得這麼快,還剩3分鐘,隊友推了一下鍵盤說寫不出來了,時間不夠了。比賽就這樣結束了。

   滾榜發現我們6題後是rank 74,但終榜是100,竟然這麼多隊都過了題,還是有點不可思議,也有點失落,還以為銅牌區能比較靠前,結果被擠下這麼多,什麼心情都沒了。銀牌區6題610以內的罰時。我們除了A題被我sb寫錯了一發,其他的題都是1A,穩是穩,只是過的比較慢,F題明明很簡單,卻在細節上浪費了很多時間,到頭來發現原來想的是正確的,M題開場就會結果不敢寫,等到其他兩個題過了沒辦法了才上手試試,也許是運氣好吧,一發就過了,但也許膽量也不夠大,導致100多罰時。最可氣的是L題全場都會的題竟然卡了我們四個小時,封榜了才過,又100多的罰時。也許這些做到極致了我們能留下兩個小時寫H題呢,銀牌也是穩穩的,但也許也許,結束了再去說什麼意義都沒有了,這也只是給心裡找的藉口矇蔽自己。

   總結:

   這是今年打了四場比賽兩場CCPC鐵所總結下來的,也不光是本場的總結。

   這場比賽在比賽結束後和滾榜之前我還是比較興奮的,除了省賽也沒有在正式賽場上過過這麼多題,也是覺得自己離銀牌很近的一次,但滾榜發現自己竟然掉到了100,心理直接跌到谷底,這個成績和鐵有什麼區別呢。回來總是在想如果可以如果可以。隊友讀題能力很差,幾乎都依賴我讀題,這也導致很多比賽我們因為題意錯了而白白浪費很多時間,這場比賽題目還是我讀的,倒也還幸運沒有讀錯而且不用隊友去確認題意,前幾場的策略是程式碼一定要經過兩個人檢視再交,題意也一定要兩個人都讀過了,我們的個人實力有欠缺,我一個程式碼手去讀題,很多我擅長的就沒有發揮出來,交流困難也有可能會誤導隊友,也有可能導致過分依賴隊友讀完題直接扔給隊友都沒有思考過。細節處理還是有欠缺,L題的表打錯了直接浪費很多時間,打表的姿勢和正解插肩而過。程式碼能力方面不足,程式碼寫出來編譯各種錯,還得一個一個調,執行的結果和自己預想的完全不一致,還得一點點去模擬程式碼跑的過程。很多時候總是會範陣列開小的導致超時等問題,輸出空格或換行等問題,資料範圍中途相乘會不會溢位等問題,雖然平時訓練都能碰上,但正式賽還是有可能犯,心裡急才是根本原因,把題目樣例隨便一測就直接提交,沒有細心去想更多的樣例,20分鐘罰時可太划不來,還會耽誤時間去找bug,修改再次測試。在常見的問題上如果都能避免,那比賽就是比真正的實力了,基礎好了,那麼思維是否迅速呢,細節考慮是否清楚呢,程式碼能力是否夠強呢。一個人有足夠的實力一個題確定了思路就可以自己上手了,三個人完全可以單獨作戰了,但實際上很多隊都有缺陷,所以需要配合好發揮出實力,我們隊就是一個程式碼能力不行,兩個讀題能力不行,思路的話倒是可以大家一起討論。我倒不是埋怨隊友,只是對我們隊作個分析。

  瀋陽賽區:

   簽到題被我上手錯三發,開場沒看到簽到題,後來有點心急,掃一眼知道是四個數相加,資料範圍都沒確定測過樣例就直接交了,看到了後改成lld卻忽略了long long 最大才2^62次左右,改成unsigned long long 後竟然又忘了在最後面手動加一,輸出也忘了改llu。回想起來簡直失了智。G題大數很早就找到規律了,用的c++的大數預處理出來沒發現檔案交錯了竟然一直RE,還以為是我們程式碼有問題,於是換了各種板子,這種低階錯誤是多麼不應該。

  然後我再也不敢寫程式碼了。。

  秦皇島賽區:

   開場一個水題居然懵了一會,20多分鐘才過,不過倒是很符合我們求穩的策略,3個題後rank 55,然後就卡死在第四題一個水幾何題了,開始的求距離排序的思路忽略了r很小的情況,死活不知道wa在哪裡了,後面改成了求面積排序的思路,居然被哈工大的幾何模板坑了,那個模板求不出圓巢狀的面積,死活不知道wa在哪,慘痛打鐵。

  杭州賽區:

   一如既往求穩的策略,一個題兩個人確定後再交,題意至少兩個人讀過,卡題至多1個半小時果斷切題。開場秒了兩個題,rank 51,第三題數論題大家心裡有點虛,發現可以化簡後思路秒有,我想的爆搜,隊友想的二進位制列舉,但忘了計算複雜度了,以為是一樣的,於是幫隊友寫,結果寫了近1個多小時才寫出來,樣例各種測試,各種debug又花了好久,提交居然TLE,很快想到可能會卡常,於是改成快速乘,還是TLE。隊友拉我去做D題,還好切了,不然要慘死在2題打鐵的佳績下了,D題一會便發現規律,然後心急預處理有問題沒發現WA了一發,然後又改了好久才A,然而晚了。B題後面改成爆搜居然還是TLE,結束被人提醒才發現爆搜的複雜度少了10,但為什麼還是TLE,隊友回來發現是快乘的鍋,把快乘改成普通乘法居然1s不到,但加上去居然跑了4s多。。。。

  連續兩場CCPC鐵的好心痛,回來停課集訓怒訓練個人賽和組隊賽,狀態迅速回升。

  南寧賽區:

  A題心急沒有發現少打了一個字元,全場除了我們隊幾乎都是1A。L題隊友打表方式不對,和正解插肩而過,銀牌題1A,銅牌題卻沒時間寫。個人程式碼能力不行,讀題能力也不行。