2016年10月9日 星期日

人生第一次參加 coding contest

最近郵件收到leetcode weekly contest 8 的信,又收到Top international 也要辦coding contest 的消息,撇開原本就有的ACM 或是Google Code Jam 不說,怎麼現在大家都在辦coding contest,是某種新時代的潮流嗎owo
看了這麼多信我都有點心動,決定這次來參加一下。不過我從來沒有參加過Coding contest 的經驗,畢竟我軟體是半路出家,演算法什麼的根本是十竅通了九竅-一竅不通,不像強者我同學外號武藤遊戲的郝神,都已經在Code Jam大殺四方,還可以打到世界前幾名(yay,連Jeff Dean 都不是對手。

第一次參加這種contest ,得名什麼的就算了,志在參加不在得名。

總之0930 時開始,時間到把題目先看一遍,總共有四題;看完完全確定解法的只有一題 415. add string,我還在寫雛型的時候,大概五分鐘網頁上已經有人解完一題了= =,這到底是什麼鬼速度RRRR。
把add string 解掉之後,繼續下一題,416. Partition Equal Subset Sum,這題我先用了最直覺的greedy algorithm 去寫,因為是approximate algorithm因此有測資是錯的,只好改用dynamic programming 去解,在1 hr 的時候拿下第二題。

第三題Sentence Screen Fitting,用最直覺的解法解掉之後,上傳遇到 time limit exceed。
做了最佳化,在 2 hr 時拿下第三題。解完剩下30 分鐘,開始寫最後一題,雖然知道演算法,不過有些地方碰上問題,剩五分鐘的時候上傳有測資出現錯誤,查了一下想出問題到底在哪裡?再上傳就通過了,只可惜已經超時,這題最後就沒有拿分。

Leetcode coding contest 的規則,除了要快還要對,每次錯誤都會加上10 分鐘的penalty,這讓submit 的時候壓力超大的,看到Accept 跳出來都在電腦前又叫又跳的,幸好房間裡沒其他人。
這種比賽真的滿吃經驗跟熟練度的,在比賽中還在翻c++ forum或cppman 就low 了,根本是上了戰場後再來查武器使用說明書Orz。
最終結果:四題完成三題(如果不算上那五分鐘理論上是四題啦)在2:06:45 時完成,但因為一次超時跟一次錯誤,各加上10分鐘,總時間是2:26:45,名次:200 / 869。

人生第一次coding contest 就這樣結束了,根本悲劇,演算法的什麼好難啊QQQQ

沒有留言:

張貼留言