在知乎上看到一個賊有意思的話題:
下面有一個高贊回答,寫的非常的生動,看完之後讓我拍手叫好,大家圖個樂,當個段子看看
https://www.zhihu.com/question/50360847/answer/189418344702046年的春天,編程全面納入高考的第四年, 河北某三線城市,星期五下午5點半。王子明同學拿着手機,一臉沮喪的走在街上,時不時的有電動汽車和外賣機器人在他身邊駛過,偶爾天空中划過幾架直升機。「都是有錢人,跟我不是一個世界的」。王子明想着,他經過一家充電站,來到雜貨店,裡面的美女機器人微笑着遞給他一瓶可口可樂,還有一塊口香糖,他拿起手機在美女的胸前一比劃,「總價30元,謝謝光臨,歡迎您下次再來。」機器人微笑着走了。「也就喝快樂水能讓我稍微快樂一點。」王子明為什麼不高興呢,因為一模成績出來了,他的成績非常不理想,其他科目還好,但是信息技術考砸了,150分的題目只拿到了85分,連及格線都沒過。「高考為什麼要考計算機,為什麼要考編程,我真羨慕我爸,他們高考根本不考算法!我真想回到10年代,那個時候我早就能上雙一流了。「王子明恨恨的說。王子明的確不擅長編程,Dijkstra,KMP怎麼背都背不過,BFS和DFS經常寫錯邊界條件,至於動態規劃壓軸題,他就從來就沒做出來過。他也就只能靠前面那60分選擇題拿點分,選擇題考的都是計算機基礎知識和基本操作,不涉及編程。「現在是高度信息化社會,計算機普及率99%,不會編程的人就是文盲!「 他腦海里又浮現出計算機老師在課堂上的話。計算機老師是一個又高又瘦的中年婦女,非常嚴厲,他很怕她,每次走廊里見到她都繞着走。王子明回到家裡,只見家門口站着一個快遞機器人,正在給媽媽搬東西,「子明快點,快幫我把這些菜放在冰箱裡,肉放冷凍,菜放冷藏。」子明連忙過去幫忙。幫完忙,媽媽問道:「這次一模成績怎麼樣,多少名啊?」王子明有點支支吾吾,不願意說。「20名?」媽媽臉色沉了下來,王子明搖了搖頭,「30名?」媽媽臉色更難看了。王子明斷斷續續說道:「4....2名」"什麼?!42名,你之前不都一直是前20的嗎,這次怎麼回事?"「呵呵!天天都在家裡打遊戲,我就從來都沒看你主動的刷過leetcode ! 你看隔壁那小崔,不僅刷leetcode,每天晚上還要打codeforces,打完還要補題,人家說了,我不把所有題目AC,就不睡覺。你呢,我就從來沒見你說過這個話。」「別騙我了,你把別人的題解複製粘貼也叫刷題?騙誰呢,自己騙自己有意思嗎?高考能讓你看別人的題解?你要是真的刷了,好,你現在就給我打開你昨天刷的題,當着我的面給我AC。AC不了,你就別吃飯!「媽媽看到王子明這個樣子,也有點心軟,說道:「孩子,不是我逼你,我也希望你能高高興興的去玩耍,你現在還有三個月就要高考了,我們家沒錢,你爸爸天天在公司加班拼死拼活一年連100萬都掙不了,我們也不能讓你去國外讀書。你現在這個樣子,怎麼考好大學?考不上好大學,你就找不到好工作,找不到好工作,就沒有女孩子願意嫁給你。現在中國每3個男人就得有一個在打光棍,=你願意做那三分之一嗎?「「媽媽這些我都知道,但是編程太痛苦了,我討厭算法,什麼dijkstra,什麼二分圖,什麼KMP,現實生活又用不到!「「媽媽也知道你不喜歡,但是高考它就考啊,媽媽上學的時候也很討厭數學,也要學一些根本用不到的圓錐曲線方程,三角函數什麼的,你咬咬牙,背過它們,高考完就讓它們滾一邊去不就得了?「"別說了,要不我給你報個輔導班吧,計算機突擊輔導班,周日下午兩點去上課。"「踢什麼球!現在是踢球的時候嗎?高考完了你踢到天黑我也不管,現在不行!「飯後,子明悶悶不樂的回到屋裡,打開leetcode,開始完成今天老師布置的題目。說起leetcode,據王子明認識的一個程序員爺爺說,這leetcode在他們年輕的時候就有了,當時的目的是總結一些程序員算法面試的題目。後來因為各大公司都在面試算法,leetcode越做越大,再後來,聽聞中國高考要考算法,leetcode立刻推出了中國高考專用版,把總部遷到了北京,迅速統治了中國計算機教育市場,甚至還高價收購了《五年高考,三年模擬》,進軍其他學科。目前是全國的中學生都在刷leetcode,老師們也在上面布置作業。另外,每周的周賽也是全國乃至全球的一場盛會,幾十萬名用戶在上面比賽,小明他們學校有個學長因為某次周賽拿了全球第7,被大家稱為「七神」,全校聞名。1子明還在刷題,Wrong answer,Wrong answer,數不清的Wrong answer.......好不容易解決了這個wrong answer,又在下一個test case掛了,好不容易把這幾個出錯的case都解決,結果又變成了Time limit exceeded。「為什麼就不能出現Accepted這個詞?很難嗎?」子明怒吼道。當子明東拼西湊把最後一道題AC,已經凌晨三點了,他發現桌子旁邊有一杯奶,不知道是什麼時候媽媽給送過來的。奶旁邊還有一張面膜和一個字條,字條寫着:「喝完奶早點睡覺,不管你考多少名,你都是媽媽最愛的子明。」子明躺在床上睡的很香,夢裡他變成了一個天才,所有的算法題,只要他隨便寫點,交上去就通過。不知不覺就到了上午10點,他猛的一下子起來:「糟了,今天還要去補課呢,都遲到兩個小時了。」這時候媽媽進來:「孩子不用補了,媽媽已經替你請假了。你昨晚睡的太晚,要好好休息一下。」「你現在就是要全心全力把算法搞好,其他科目都可以放放,我昨天剛給你報了那個計算機輔導班,最後一個名額呢,被我搶到了。輔導班的楊老師非常厲害,而且很擅長一對一輔導。」「那個輔導班的老師要求你這幾天打一場編程比賽,然後把你的比賽記錄以及代碼發給他,他幫你分析一下。一會10點半是leetcode周賽,你吃完早飯去打一下。能進前1萬名我請你吃火鍋。」然而子明並沒有進前1萬,甚至連前10萬都沒進,他只做出了一道easy難度的簽到題。望着滿眼的紅色wrong answer,他非常沮喪。有一道BFS的題明明會做,但就是不對,也不知道錯在哪裡。畢竟,為了提升自己比賽成績的含金量,防止有人hard code,leetcode平台這幾年在比賽的時候不再告訴選手具體哪個test case錯了,只會告訴錯誤類型。媽媽看在眼裡,也沒說什麼,去臥室給那個輔導老師打電話,「我們家子明可能讓您費心了,他在編程方面完全不開竅。」他聽到媽媽的聲音,電話那邊則是 「沒問題沒問題,這樣的學生我見多了,你家孩子算不錯的了,起碼還做出來一道,沒有我教不好的學生。」周日的下午,他跟媽媽去了輔導班,進了教室,輔導老師正在給大家演示匈牙利算法的實現過程。子明聽着聽着,發現這個老師真的不一般,匈牙利算法講的栩栩如生,要知道他學校的老師只會念ppt,而且ppt做的還不咋地,但這個老師講完,他聽懂了,而且有種想找一道題練練手的衝動。「媽媽這個老師講的真好!」媽媽說道:「那是必須的,這個老師可是知名教練,大學時候是ICPC全國金牌,我們小區那個全市冠軍吳剛就是他教出來的。衡水中學開了1200萬年薪挖他,他不去。要不是媽媽凌晨一點守在電腦前搶課,根本搶不到呢。」下課他和媽媽來辦公室找到老師,發現老師已經拿着一堆紙在等着他。子明一看,是他參加比賽提交的所有代碼,老師已經打印出來了,上面有不少勾圈,顯然是認真讀過。老師第一句話就是:「這個比賽題目做不出來沒關係,賽後分析才是關鍵。我看了你比賽的代碼,比我想象的要好,你如果注意一下細節,這次比賽你就不是一題,而是三題了。」這句話讓子明不敢相信:「三題,要是三題的話我就是前1萬名了。「"你還記得你第二題死活都做不對,一直都是wrong answer嗎?"子明拿出自己的電腦,一調換,提交,發現直接變成漂亮的Accepted了。老師一臉嚴肅:「住嘴,什麼低級錯誤,低級錯誤也是錯誤!高考犯低級錯誤,照樣沒有分數。」子明沉默了,老師繼續說道:「你的代碼命名非常不規範,i,j,k橫行,而且整體局部不分,前面剛給一個全局變量賦值為 i,後面又把 i 賦值給另一個局部變量。這樣的話很容易出錯。「「可是老師,我每一行都仔細檢查的,出錯的概率很低的。「「那好,假設你每行出錯的概率是1%,很低了嗎,那30行出錯的概率是多少?「「對啊,你每個程序寫30行,就有26%的概率出錯,100分就變成74分了。你高考丟26分,足以讓你跟重點大學失之交臂。馬虎是不可避免的,你如果能把出錯率降到0.1%,那一道題出錯的概率就是3%,你就能提高23分,如果你能把你的代碼寫規範,那足以降到0.1%。注意,所有的馬虎都是有因可循,一定要找深層原因,而不是把它僅僅歸結於馬虎!「子明默不作聲,這些他老師從來都沒跟他說過,老師只會說:「馬虎啊,那下次注意不要馬虎不就行了嗎?」但他還是會馬虎「代碼規範真的很重要,你知道衡水中學的學生怎麼練的嗎?他們全校寫代碼用的都是一個規範,學校自己搞了一個做題系統,學生們在這個系統上做題的時候,如果代碼不符合規範,會被直接判錯,就算是寫對了也沒用,因此所有學生寫的代碼都一個樣子。當然我不能要求你這樣,但是你一定要留心。「楊老師喝了一口水,又看了一下子明的代碼,繼續說道:「然後第三題,我看你已經判斷出這道題需要用dijkstra算法了,但是你為什麼只寫了一個def dijkstra然後就沒了?「「這個方法其實不難記的,就是建造一個堆,然後每次把權重最小的邊抽出來更新,我有一個專門講這個方法的視頻,你把接收器給我,我傳給你,你回去好好看看,裡面有專門的口訣。「「你這兩道題都是經過努力可以做出來的,只要做出來,你的成績就會有飛躍。這些是我一些輔導材料,你回去好好研究一下,以後每周要來定時上課哦。「子明說完,他媽媽馬上跟老師說:「楊老師你看,能不能給我孩子單獨開個小灶啊。」「這是我的日程表,子明你來看一下,從這個白色區域選兩個小時」2回家的路上,子明埋怨媽媽:「媽你這是幹什麼啊,花這麼多錢,兩個小時都頂我一個月生活費了,咱家又沒那麼多錢。」「再窮也不能窮教育啊,你考上好大學,能給我省好幾千萬呢,再說你打網遊充的錢也有好幾萬了,你少充點不就補回來了?」子明不說話,回去之後開始拿出老師給的資料慢慢看,媽媽則在廚房忙活,給兒子做他最愛吃的紅燒牛肉。爸爸每天在公司加班,平時就很晚回家,最近為了不影響兒子備戰高考,乾脆就住在公司了。「兒子,考上雙一流,爸爸帶你去你最想去的環球影城。」爸爸和兒子視頻聊天,「爸爸,我們班明明她爸爸要帶她去月球呢。」「爸爸我開玩笑呢,明明她爸爸是大公司老總,咱家能跟她家比嘛。」「哈哈哈哈,嚇死爸爸了!等你有了出息,還想讓你帶我去呢。」3過了一周,子明準時出現在楊老師家裡。楊老師很熱情招待了他,然後對他進行了輔導。「這個信息技術高考在我上學的時候並沒有,是10年前剛剛加上的。一開始滿分是100,而且只在部分發達省份考,後來因為人口老齡化加劇,青年信息人才越來越緊缺,2043年開始上升到了150分,並推廣到了全國,統一上機考試,時間兩個半小時。首先是60分的選擇題,這個考的就是計算機基礎知識,什麼windows操作啊,什麼進制轉換呢,我相信你應該沒什麼問題,這些題目一定要快,必須1分鐘就要一道,30分鐘內解決戰鬥。但是高考和比賽的區別是,高考在中間不會告訴你做的對不對,只有考試結束之後才會判分,所以你120分鐘做完,和150分鐘做完,結果是一樣的。這就要求你必須非常仔細,一遍就要做對。不要指望着讓OJ幫你調BUG。不過呢,就算你寫的不對也沒關係,test case和test case之間是相互獨立的,你通過了這個test case就給這個分,全通過了就是滿分。另外,高考是不限語言的,但是所有語言的time limit都一樣,你用python當然OK,因為運算時間很充裕,複雜度只要正確就行,但是呢,如果你用C++可能會有額外的好處,衡水中學在入學時就強制所有學生都用C++。我記得2044年上海的題目,出題者本來是想要大家用O(n log n)算法的,但是限時給的太長了,如果你用C++再加上一些優化,O(n^2)也能拿滿分,最後好多人暴力過了。判卷組本來想縮短時限重判的,結果因為大家已經知道自己成績,社會反對聲浪太大,只好作罷,你看,用c++白撿了10分,還省了大量時間。所以如果你現在上高二,我會建議你改C++,但是你是高三,所以你可以選擇不改。前兩道題,就是一些數組,字符串的題目,考察最基本的前綴,後綴,二分,雙指針,哈希表之類的,這些題目,是送分題,一分都不能丟的,而且要10分鐘一道。中間兩道題,一般是二維數組或者圖之類的,需要用到各種搜索,BFS,DFS,或者一些圖論基礎知識,比如union find,dijkstra之類的,這些題目,如果你想要上雙一流,也是必須要拿下的,要做到20分鐘一道。最後兩道題要花一個小時完成,第五題容易出奇葩的題目,或者是幾個知識點綜合起來的綜合題,或者需要用到線段樹進行優化,甚至可能會出幾何和數論。這兩道題,以你目前的水平,是拿不下的,但是你可以從裡面搶分,千萬不要空着。注意,你哪怕用最暴力的方法,也能拿到大約1/3的分數,前面如果再不扣分。你就有130了,足夠你上雙一流的。不過你要是想上清北華五,那就要至少140分,也就是選擇題全對,然後最多有一道題只會做small test case,剩下的都要滿分。而且,動態規劃,千萬不要畏懼,雖然千變萬化,其實也可以分成幾大類的,背包問題,樹形DP,博弈論.....你現在水平不高,你只要記住,動態規劃,就是記憶化的遞歸,你只要往這方面想,絕大部分題目你都是可以解決的,至少可以拿到大部分分數。雖然題型分布一般是這樣,但是高考也有不按套路出牌的時候,比如去年最後一題是貪心+最小堆,而動態規劃放到了第三題的位置,難倒了一大片。還有我記得前年某個省,最後一題是概率題,需要用到排列組合,而排列組合需要存儲中間結果,取模需要用到數論知識,否則大數據會超時......雖然中國剩餘定理還有歐拉定理什麼的是超綱的,會在考試的時候給你寫出來,但是掌握了沒虧吃,畢竟時間是最寶貴的.....最後想說,學習算法,最關鍵的還是多練習,尤其是練習自己的薄弱環節,刷自己的強項題固然很爽,但是沒什麼效果。衡水中學的學生,三年下來要做好幾千道題,他們每周要搞兩次編程比賽,全校大排名,每個班的最高名次和平均名次都會算到教師績效里。而且,他們搞出來的那個系統,不僅強制學生把代碼寫規範,還能通過每個學生的答題情況來分析他們的弱點,專門給每個學生出他們大概率做錯的題目,比如一個學生binary search已經爐火純青,但是DFS經常寫錯,那麼系統就會大概率給他出DFS相關題目,很少出binary search。要不說那邊學生平時用那個系統做題非常痛苦,但最後高考成績都很高呢!雖然這些他們老師在課上也說過,但是子明還是聽的津津有味,後來老師又給他輔導了幾道錯題,擴展了很多知識點,兩個小時很快過去了,老師把把子明送走,說:「現在努力絕對來得及,千萬不要對自己失去信心!只要聽我的,把我給你布置的題目刷透,你高考上130沒問題。」在回家的路上,子明充滿了鬥志,說道:「不就是區區算法嘛,有什麼好怕的,來啊高考!看我6月把你打的落花流水!」這個時候子明的手機響了,是他的朋友小洋:「小明啊,下周日上午我們一起踢球怎麼樣,咱們初中同學長庚也加入呢。」子明又有點心痒痒了,想偷偷去,不告訴媽媽,後來覺得有點不好,就在電話里跟媽媽說了,沒想到媽媽爽快答應了「你既然跟我說了,說明你現在還是知道分寸的,踢球沒什麼不好,可以放鬆你的大腦,你這次可以去,但是你要用一次周賽前1萬名的成績來回報我。」