1. 程式人生 > >2016 CCPC 杭州站 總結

2016 CCPC 杭州站 總結

再次來到杭電,其實是有點難過的,雖然我一直沒說,走在杭電的校園裡的時候還能想起來自己上次來的時候的種種幼稚。但是這場比賽打下來,感覺自己也想開許多了,雖然比賽還是失敗了。

恩,講比賽吧。

熱身賽的時候就出了一道題,第二題隊友去做了,我就沒管,表示d題連題意都搞不清楚,當然,搞清楚了我也不會做,c題是計算幾何的模板題,然而我沒做過幾何的題,然後板子也沒帶,平時偷的懶比賽就看出來了。(表示對面的復旦小哥好厲害,全程說學逗唱輕鬆過題)

正式賽:

賽前商討了儘量讓我敲題,畢竟拿銅可能拼手速。開賽前隊友告訴我有思路就敲吧。開啟題目之後, a題留給我看,很快就看懂了,大概有個想法,然後hyq跟我講了c題題意,我又考慮了下,感覺a真的很水,於是趕緊敲出來,敲的時候一邊考慮了下坑點,敲完之後直接交,ac!當時全場還沒幾個人出題來著,一看榜,第九,成就感蠻強的,感覺是個好勢頭,然後對面復旦小哥看著我們插上了氣球(好刺激~)。然後可能就是這種感覺迷惑了我們,之後各種不順。第二題(f)是對一個式子各項列舉,求出最大值的題,一開始我順其自然的把/號之前的式子想成一個整體,實現的時候還特意加了括號,然後一敲示例,發現不對,然後才注意到題意並不是當成一個整體,去了括號,交,wa。期間想了一些爆longlong的情況,修改了交,繼續wa。回過頭來一想,之前由於假設除之前都是整體,所以當然除的數越小越好,所有隻給除的數分配了一位,現在不是看成一個整體,所以這樣肯定不對,然後改程式碼,換成對五項都列舉一遍,也就是四重for迴圈,交,tle!一想也對,時間複雜度到o(n^4)了,然後想著優化,研究那個式子的時候,仔細一看,a+b-c*d/e;馬丹-後面的數肯定越小越好啊,c和d明顯只能分配一位啊,都是之前當成把沒一項之前的結果當整體的鍋,重新寫了下,只需要列舉a和b的分配就ok,提交,終於ac!這時候已經是開場兩小時多了,我第一發ac是在15min,兩個小時沒出題!做出第二題之後排名也已經掉到90多。期間c題已經有思路,hyq試了一遍,交上去wa,我提出了double的情況,hyq改了下程式碼,ac,連過兩題。這兩題感覺都是很可惜,太晚出了,第二題就是我的鍋,沒有想清楚。然後看b題,b題是個圖論的題,看完題的時候我覺得應該是求連通塊,對每個連通塊求值加和,小豪也覺得我的思路挺對的,但是hyq說這是個網路流的題,並指出每個點之間是單向的,然後由於我對單向連通沒有把握,也沒接觸過網路流,就放棄了這道題,交給隊友了。然後接下來做的比較多的k題,沒什麼思路,又看了幾道其它題目,期間有道感覺是數位dp的樣子,但是沒有給上屆,那應該不是了,感覺自己太弱了。然後隊友討論出了b題,不是網路流,用最小生成樹求,其實我心裡感覺也很不靠譜,最小生成樹太牽強了,但是由於之前已經放棄這道題,也沒多想,就幫隊友敲出了最小生成樹模板,讓他們做去了。大概封榜之前我看了下榜,我們還在90多名,還在銅牌區裡,形勢也基本確定了,如果我們過了b題,那麼穩銅,如果沒過,那就只能看運氣,沒有掉出銅牌區。當時我個人感覺如果沒做出來b題的話是很懸了,雖然我第一題敲的非常快,但第二第三題實在是挖的坑太大了。小豪敲出b題最小生成樹的實現程式碼,測樣例,不過,打印出程式碼來找bug,然後這時候我已經放棄其它題了,跟小豪一起嚴重最小生成樹演算法的正確性,結果果然是不對的,然後hyq想出了基於最小生成樹的一個改進的方法,讓他上去敲,敲出來後,樣例過了,交WA,然後最後我們三個人一起改bug,不斷交,不斷返回wa,最後真的絕望了,但是沒辦法,坑都是之前挖出來的。結束比賽後,問了下對面的復旦小哥,b題怎麼做,他們的主程式碼手錶示求出連通塊中入度為0的點把這些值加和,然後不存在入度為0的連通塊中,取出權值最小的點加和。暈!一開始的思路是對的,只不過我忘了一點,連通塊中入度為0的點一定不會超過一個,所以在hyq說出單向的時候我才會不相信自己的想法,而且這根本就不是網路流啊,事後知道這場比賽真正的網路流題是一個銀牌題啊QAQ,所以就是被帶錯了方向,心塞。

然後結果果不其然,我們掉出了銅牌區,而且離銅就差兩名,只是兩發罰時的差距,淚奔。。

回過頭來想,這場沒能拿獎,責任大部分在我這裡,第二題第一發提交之前,測樣例不過,發現是之前的一個假設錯誤的時候,應該立馬冷靜下來,重新思考這個題,而不是改一下過樣例就交,結果造成了三發無謂的罰時,以及延遲了這道題出的時間。然後在做出第三道題的時候,b題我的想法順著想下去就只正解了, 但是我沒有堅持,隊友一說就放棄了,並且在隊友也發現不是網路流的時候,我沒有立馬想起來重新按之前的思路去想,而是不管不顧,去看別的題去了。當然這跟隊友的誤導也有很大關係。所以經過了這次比賽,我得出了一些經驗:

1.(致全隊)一道題在自己真正的想出一個成熟的解法的時候,再跟隊友討論,更不要給這道題分類,避免誤導。

2.當出現測試樣例發現自己的一些想法不對的時候,哪怕是很小的假設出錯了,也不要強行把樣例改對就交了,冷靜下來想想,這個錯誤會不會對整個題的解法造成影響。

3.銅牌真的會拼手速和罰時,前面幾道簽到題首先一定要穩,很重要,先保證簽到題穩過,當然也要比較快,然後才是衝擊後面的題目保證拿到獎牌。

4.提高自己對題目判斷的能力,判斷就是一種能力,要相信自己。

回來之後,打算繼續刷一下數論,先把數論的基礎給學好,然後poj儘量也跟著刷,要鍛鍊自己的刷題速度,自己刷題太慢了,cf、bc的比賽也不能落下,感覺對 思維的鍛鍊真的很大,我過a題過的這麼快的原因應該就是這些比賽帶來的鍛鍊。

然後青島再戰!