Leetcode的weekly contest半小時AC 4題的那些人是怎麼做到的?

每周參加weekly contest,發現前幾名都會在半小時左右完成4題,我感覺對於一道陌生的MEDIUM題目,理解+思考就要10分鐘,而他們這時候已經寫完了。。這究竟是修鍊到了什麼樣的地步才能達到的水準?


個人觀點,受過ACM訓練,有著Regional爭金能力的個人,面對這個weekly contest,真的是沒啥難點可言,30分鐘完全是夠的。

要知道通常一場regional,三個人在十道以上題目里選出最弱那道簽到題及基本模板題,敲下來拿上全場前幾個AC的,往往前兩個題都在15分鐘內搞定了;TC之類的,75分鐘三道題,無論哪個division都比leet的比賽難度大的多,也常有全過的。

坦白說,如果對比ACM,leet上代碼規模超過70行的題目(ACM式寫法)屈指可數,就算是hard難度也就是ACM賽場上通常第三道有人過的題目水平,屬於略高於基本教材的情況。

那就很自然了,你遇到的半小時清場的,大體上可能是折騰過/折騰ing的ACM訓練生,沒進行過足夠練習的人,要迅速找到正確思考方向並隱約知道坑在哪兒,比不過他們非常非常正常,因為根據個人經驗和實踐,ACM隊伍具有拿金實力的,幾乎每個隊員都曾經練習過上千道各種難度的這一類演算法練習題,並且大多數難度都在此之上。你能達到這個級別的訓練量和難度,講道理就算不能三十分鐘清場,用個四五十分鐘也能搞定。


簡單點說,訓練強度不同咯。

前兩名都是ACM選手,來鄙視凡人的。

第七第八名開始就是如我這樣的弱雞,自己覺得演算法不錯但是其實還是渣的。我從來沒參加過ACM,但是轉行cs後一直堅持演算法訓練:

Leetcode做了兩百多道,後來沒做了,太簡單

USACO training一百題

POJ三百

SPOJ一百

現在在一個新OJ上秘密訓練。

至於你說是什麼樣的境界……一般來說easy和hard題目和大部分的medium題目都是看一眼就知道怎麼做,寫五分鐘到十分鐘自己測試兩下交了就AC。

我沒寫錯。hard多數還是套路題,並不是真難,有些是編程略微複雜一點,能不能寫快就看你代碼量了。medium題目反而有一些思路精奇的。


唯手熟爾


以前打比賽的時候 前排選手在我沒看完題目的時候已經AC


一般情況下,第一題數據比較水,不用太考慮演算法優化,很暴力的都能過;第二、三題一般就要考慮一點點簡單演算法,而數據的size大部分情況下不會很苛刻,只要是超過naive的演算法時間複雜度都是比較能接受的,可能難點是如何實現;最後一道題,近來幾場都挺偏套路的(可以找到原題,裸一個dp,裸一個Trie,裸一個二分之類,裸一個數位搜索),如果之前做過那很快就能實現,沒做過的話,演算法難點應該只有一步,不需要想太深。

我不是很認真地打了一年acm,做水題比較多,手速挺快,Codeforces只有2000分,現在做weekly contest 可以穩定前10,一半多情況下可以打到前五。原因可能是:1.weekly contest的題不能說很原創,打acm見過的套路多了,想出演算法的時間就比較快。(個人角度) 2. 雖然打weekly contest的人中有實力很強勁的選手,但大部分人不是競賽選手,還是以熟悉面試題為目的的人居多,平均水平暫時不算很高。(環境角度)3. 罰時從10min下調到5min,給了手速快的心眼粗的人(比如我)很大的優勢。

最後說一點,個人感覺在這種題目不算太難的情況下,完成時間多幾分鐘十幾分鐘還可以接受,多多訓練自己思維的縝密性,每道題盡量一次通過比較重要。如果我要通過leetcode weekly contest選人,我會更鐘意沒有錯誤提交的coder。(一個本科生的感受,不代表面試官的觀點)


今天acm新疆賽區網路賽,清華大學104分鐘完成了ak....有的時候,人與人之間的差距大於人與猿類的差距...


還是太年輕啊,你打下codeforces ,就會發現人和人之間是有差距的。


一部分天賦異稟的(少,估計也不會閑得參加leetcode的比賽,topcoder才是他們的舞台)

還有就是訓練量驚人的

基本上前幾都是acmer,跟準備面試的你們訓練量不是一個檔次


leetcode的題目?一星期就刷完了。全部都在leetcode網頁上自帶的編輯器里寫的,寫完就交,編譯運行測試都不存在的,基本一次過。就這種難度的題目,30分鐘做四道那是基本功,靠脊椎反射就做完了,純體力活。


做過高等數學的課後習題么……刷過吉米多維奇的人……多數題都是靠眼睛看就能看出來的……一般人還是得想想吧……

高考數學有半小時答完睡覺的……

ACM打過2年比賽的…一般每周A10道左右閑題寒暑假集訓一個月A上百道很正常,另外…誰手上沒有模板函數……複製粘貼改2行就能A掉絕大多數……

無他,唯手熟耳……

我只是個水貨,昨天表弟A校內的oj卡了一個水題2小時……發給我,我去上個廁所,手機敲個函數微信發過去就A了…… 判斷一個多位數里有沒有出現某個非零個位數字……渣手機排版

bool test_hate_number(int test_num, int hate_num){

int test = test_num;


while(test!=0){


if(test%10 == hate_num){

return true;


} else{

test = test/10;

}
}
return false;

}

另外leetcode上的演算法題哪怕是easy也有不同難度的解法……


因為leetcode確實很水。leetcode難度大概在noip普及組和提高組難度之間,而noip是中學演算法比賽中最簡單的一個,參加了沒拿道滿分的是很容易被鄙視的。我這麼說你懂吧。區域賽銀牌靠前的選手基本都有半小時ak的能力,但是這些同學能做出來的最難的題目,可能在大神眼中,只是代碼級別的題目。


術業有專攻嘛.

有一部分人就是專門搞演算法,搞競賽的,我同學放暑假都不回家留在學校集訓,寫業務代碼的演算法肯定搞不過專門寫演算法的嘍,你讓他寫業務代碼,他還真不一定寫得了。當然,一般這部分人都是優越感爆棚,不屑於寫業務代碼的,hhh


推薦閱讀:

遊戲設計製作時是否會用到類似 ACM 中的演算法設計?
ACM中哪些演算法是應該敲的滾瓜爛熟的?
寫代碼的時候應該怎樣的思路將現實世界轉化為代碼, 魔方做一個例子?
用程序實現自動寫小說,難度有多大?有哪些需要克服的難點,大體思路是怎樣的?
獲得ACM ICPC Regional金牌是一種什麼樣的體驗?

TAG:演算法 | 演算法與數據結構 | ACM競賽 | Leetcode | ACM |