假如高考考編程。。。
大家好,分享一篇知乎上一個非常有意思的回答:假如高考考編程會怎樣?
轉(zhuǎn)載來源:知乎
鏈接:https://www.zhihu.com/question/50360847/answer/1894183447 作者:Super Mario2046年的春天,編程全面納入高考的第四年, 河北某三線城市,星期五下午5點半。
王子明同學(xué)拿著手機(jī),一臉沮喪的走在街上,時不時的有電動汽車和外賣機(jī)器人在他身邊駛過,偶爾天空中劃過幾架直升機(jī)。“都是有錢人,跟我不是一個世界的”。王子明想著,他經(jīng)過一家充電站,來到雜貨店,里面的美女機(jī)器人微笑著遞給他一瓶可口可樂,還有一塊口香糖,他拿起手機(jī)在美女的胸前一比劃,“總價30元,謝謝光臨,歡迎您下次再來。”機(jī)器人微笑著走了。“也就喝快樂水能讓我稍微快樂一點。“

王子明為什么不高興呢,因為一模成績出來了,他的成績非常不理想,其他科目還好,但是信息技術(shù)考砸了,150分的題目只拿到了85分,連及格線都沒過。
“高考為什么要考計算機(jī),為什么要考編程,我真羨慕我爸,他們高考根本不考算法!我真想回到10年代,那個時候我早就能上雙一流了。“王子明恨恨的說。
王子明的確不擅長編程,Dijkstra,KMP怎么背都背不過,BFS和DFS經(jīng)常寫錯邊界條件,至于動態(tài)規(guī)劃壓軸題,他就從來就沒做出來過。他也就只能靠前面那60分選擇題拿點分,選擇題考的都是計算機(jī)基礎(chǔ)知識和基本操作,不涉及編程。“現(xiàn)在是高度信息化社會,計算機(jī)普及率99%,不會編程的人就是文盲!“ 他腦海里又浮現(xiàn)出計算機(jī)老師在課堂上的話。計算機(jī)老師是一個又高又瘦的中年婦女,非常嚴(yán)厲,他很怕她,每次走廊里見到她都繞著走。
王子明回到家里,只見家門口站著一個快遞機(jī)器人,正在給媽媽搬東西,“子明快點,快幫我把這些菜放在冰箱里,肉放冷凍,菜放冷藏。”子明連忙過去幫忙。幫完忙,媽媽問道:“這次一模成績怎么樣,多少名啊?”王子明有點支支吾吾,不愿意說。“20名?”媽媽臉色沉了下來,王子明搖了搖頭,“30名?”媽媽臉色更難看了。王子明斷斷續(xù)續(xù)說道:“4....2名”
"什么?!42名,你之前不都一直是前20的嗎,這次怎么回事?"
“我計算機(jī)沒考好,只有85分。”
“呵呵!天天都在家里打游戲,我就從來都沒看你主動的刷過leetcode ! 你看隔壁那小崔,不僅刷leetcode,每天晚上還要打codeforces,打完還要補(bǔ)題,人家說了,我不把所有題目AC,就不睡覺。你呢,我就從來沒見你說過這個話。”
“我刷leetcode,昨天刷了8道呢。”
“別騙我了,你把別人的題解復(fù)制粘貼也叫刷題?騙誰呢,自己騙自己有意思嗎?高考能讓你看別人的題解?你要是真的刷了,好,你現(xiàn)在就給我打開你昨天刷的題,當(dāng)著我的面給我AC。AC不了,你就別吃飯!“
“媽媽我錯了!“王子明快要哭出來了。
媽媽看到王子明這個樣子,也有點心軟,說道:“孩子,不是我逼你,我也希望你能高高興興的去玩耍,你現(xiàn)在還有三個月就要高考了,我們家沒錢,你爸爸天天在公司加班拼死拼活一年連100萬都掙不了,我們也不能讓你去國外讀書。你現(xiàn)在這個樣子,怎么考好大學(xué)?考不上好大學(xué),你就找不到好工作,找不到好工作,就沒有女孩子愿意嫁給你。現(xiàn)在中國每3個男人就得有一個在打光棍,你愿意做那三分之一嗎?“
“媽媽這些我都知道,但是編程太痛苦了,我討厭算法,什么dijkstra,什么二分圖,什么KMP,現(xiàn)實生活又用不到!“
“媽媽也知道你不喜歡,但是高考它就考啊,媽媽上學(xué)的時候也很討厭數(shù)學(xué),也要學(xué)一些根本用不到的圓錐曲線方程,三角函數(shù)什么的,你咬咬牙,背過它們,高考完就讓它們滾一邊去不就得了?“
“媽媽我......“
"別說了,要不我給你報個輔導(dǎo)班吧,計算機(jī)突擊輔導(dǎo)班,周日下午兩點去上課。"
“周日我要和小洋去踢球。“
“踢什么球!現(xiàn)在是踢球的時候嗎?高考完了你踢到天黑我也不管,現(xiàn)在不行!“

飯后,子明悶悶不樂的回到屋里,打開leetcode,開始完成今天老師布置的題目。說起leetcode,據(jù)王子明認(rèn)識的一個程序員爺爺說,這leetcode在他們年輕的時候就有了,當(dāng)時的目的是總結(jié)一些程序員算法面試的題目。后來因為各大公司都在面試算法,leetcode越做越大,再后來,聽聞中國高考要考算法,leetcode立刻推出了中國高考專用版,把總部遷到了北京,迅速統(tǒng)治了中國計算機(jī)教育市場,甚至還高價收購了《五年高考,三年模擬》,進(jìn)軍其他學(xué)科。目前是全國的中學(xué)生都在刷leetcode,老師們也在上面布置作業(yè)。
另外,每周的周賽也是全國乃至全球的一場盛會,幾十萬名用戶在上面比賽,小明他們學(xué)校有個學(xué)長因為某次周賽拿了全球第7,被大家稱為“七神”,全校聞名。
......
子明還在刷題,Wrong answer,Wrong answer,數(shù)不清的Wrong answer.......好不容易解決了這個wrong answer,又在下一個test case掛了,好不容易把這幾個出錯的case都解決,結(jié)果又變成了Time limit exceeded。“為什么就不能出現(xiàn)Accepted這個詞?很難嗎?”子明怒吼道。
當(dāng)子明東拼西湊把最后一道題AC,已經(jīng)凌晨三點了,他發(fā)現(xiàn)桌子旁邊有一杯奶,不知道是什么時候媽媽給送過來的。奶旁邊還有一張面膜和一個字條,字條寫著:“喝完奶早點睡覺,不管你考多少名,你都是媽媽最愛的子明。”
子明躺在床上睡的很香,夢里他變成了一個天才,所有的算法題,只要他隨便寫點,交上去就通過。不知不覺就到了上午10點,他猛的一下子起來:“糟了,今天還要去補(bǔ)課呢,都遲到兩個小時了。”這時候媽媽進(jìn)來:“孩子不用補(bǔ)了,媽媽已經(jīng)替你請假了。你昨晚睡的太晚,要好好休息一下。“
“謝謝媽媽!“子明松了一口氣。
“你現(xiàn)在就是要全心全力把算法搞好,其他科目都可以放放,我昨天剛給你報了那個計算機(jī)輔導(dǎo)班,最后一個名額呢,被我搶到了。輔導(dǎo)班的楊老師非常厲害,而且很擅長一對一輔導(dǎo)。“
“哦!“
“那個輔導(dǎo)班的老師要求你這幾天打一場編程比賽,然后把你的比賽記錄以及代碼發(fā)給他,他幫你分析一下。一會10點半是leetcode周賽,你吃完早飯去打一下。能進(jìn)前1萬名我請你吃火鍋。“
“好的!“
然而子明并沒有進(jìn)前1萬,甚至連前10萬都沒進(jìn),他只做出了一道easy難度的簽到題。望著滿眼的紅色wrong answer,他非常沮喪。有一道BFS的題明明會做,但就是不對,也不知道錯在哪里。畢竟,為了提升自己比賽成績的含金量,防止有人hard code,leetcode平臺這幾年在比賽的時候不再告訴選手具體哪個test case錯了,只會告訴錯誤類型。
媽媽看在眼里,也沒說什么,去臥室給那個輔導(dǎo)老師打電話,“我們家子明可能讓您費心了,他在編程方面完全不開竅。”他聽到媽媽的聲音,電話那邊則是 “沒問題沒問題,這樣的學(xué)生我見多了,你家孩子算不錯的了,起碼還做出來一道,沒有我教不好的學(xué)生。”
周日的下午,他跟媽媽去了輔導(dǎo)班,進(jìn)了教室,輔導(dǎo)老師正在給大家演示匈牙利算法的實現(xiàn)過程。“我們現(xiàn)在是月老,撮合的越多越好......" 子明聽著聽著,發(fā)現(xiàn)這個老師真的不一般,匈牙利算法講的栩栩如生,要知道他學(xué)校的老師只會念ppt,而且ppt做的還不咋地,但這個老師講完,他聽懂了,而且有種想找一道題練練手的沖動。
“媽媽這個老師講的真好!”媽媽說道:“那是必須的,這個老師可是知名教練,大學(xué)時候是ICPC全國金牌,我們小區(qū)那個全市冠軍吳剛就是他教出來的。衡水中學(xué)開了1200萬年薪挖他,他不去。要不是媽媽凌晨一點守在電腦前搶課,根本搶不到呢。
”下課他和媽媽來辦公室找到老師,發(fā)現(xiàn)老師已經(jīng)拿著一堆紙在等著他。子明一看,是他參加比賽提交的所有代碼,老師已經(jīng)打印出來了,上面有不少勾圈,顯然是認(rèn)真讀過。老師第一句話就是:“這個比賽題目做不出來沒關(guān)系,賽后分析才是關(guān)鍵。我看了你比賽的代碼,比我想象的要好,你如果注意一下細(xì)節(jié),這次比賽你就不是一題,而是三題了。
”這句話讓子明不敢相信:“三題,要是三題的話我就是前1萬名了。“
"你還記得你第二題死活都做不對,一直都是wrong answer嗎?"
“是的“
“你把第37行i和j兩個變量調(diào)過來試試看。
“子明拿出自己的電腦,一調(diào)換,提交,發(fā)現(xiàn)直接變成漂亮的Accepted了。
“哈哈,看來這道題我還是會做的,這就是低級錯誤“
老師一臉嚴(yán)肅:“住嘴,什么低級錯誤,低級錯誤也是錯誤!高考犯低級錯誤,照樣沒有分?jǐn)?shù)。”
子明沉默了,老師繼續(xù)說道:“你的代碼命名非常不規(guī)范,i,j,k橫行,而且整體局部不分,前面剛給一個全局變量賦值為 i,后面又把 i 賦值給另一個局部變量。這樣的話很容易出錯。“
“可是老師,我每一行都仔細(xì)檢查的,出錯的概率很低的。“
“那好,假設(shè)你每行出錯的概率是1%,很低了嗎,那30行出錯的概率是多少?“
“26%。“子明拿出手機(jī)快速計算了一下。“
對啊,你每個程序?qū)?0行,就有26%的概率出錯,100分就變成74分了。你高考丟26分,足以讓你跟重點大學(xué)失之交臂。馬虎是不可避免的,你如果能把出錯率降到0.1%,那一道題出錯的概率就是3%,你就能提高23分,如果你能把你的代碼寫規(guī)范,那足以降到0.1%。注意,所有的馬虎都是有因可循,一定要找深層原因,而不是把它僅僅歸結(jié)于馬虎!
“子明默不作聲,這些他老師從來都沒跟他說過,老師只會說:“馬虎啊,那下次注意不要馬虎不就行了嗎?”但他還是會馬虎
“代碼規(guī)范真的很重要,你知道衡水中學(xué)的學(xué)生怎么練的嗎?他們?nèi)懘a用的都是一個規(guī)范,學(xué)校自己搞了一個做題系統(tǒng),學(xué)生們在這個系統(tǒng)上做題的時候,如果代碼不符合規(guī)范,會被直接判錯,就算是寫對了也沒用,因此所有學(xué)生寫的代碼都一個樣子。當(dāng)然我不能要求你這樣,但是你一定要留心。
“楊老師喝了一口水,又看了一下子明的代碼,繼續(xù)說道:“然后第三題,我看你已經(jīng)判斷出這道題需要用dijkstra算法了,但是你為什么只寫了一個def dijkstra然后就沒了?“
“我忘了怎么寫了。“
“這個方法其實不難記的,就是建造一個堆,然后每次把權(quán)重最小的邊抽出來更新,我有一個專門講這個方法的視頻,你把接收器給我,我傳給你,你回去好好看看,里面有專門的口訣。“
“好的,謝謝老師!“
“你這兩道題都是經(jīng)過努力可以做出來的,只要做出來,你的成績就會有飛躍。這些是我一些輔導(dǎo)材料,你回去好好研究一下,以后每周要來定時上課哦。“
子明說完,他媽媽馬上跟老師說:“楊老師你看,能不能給我孩子單獨開個小灶啊。”“可以,不過這個是另收錢的,每小時5000。““沒問題,這個老師您看您什么時候有時間啊。”“這是我的日程表,子明你來看一下,從這個白色區(qū)域選兩個小時”.......
回家的路上,子明埋怨媽媽:“媽你這是干什么啊,花這么多錢,兩個小時都頂我一個月生活費了,咱家又沒那么多錢。”“再窮也不能窮教育啊,你考上好大學(xué),能給我省好幾千萬呢,再說你打網(wǎng)游充的錢也有好幾萬了,你少充點不就補(bǔ)回來了?”
子明不說話,回去之后開始拿出老師給的資料慢慢看,媽媽則在廚房忙活,給兒子做他最愛吃的紅燒牛肉。爸爸每天在公司加班,平時就很晚回家,最近為了不影響兒子備戰(zhàn)高考,干脆就住在公司了。“兒子,考上雙一流,爸爸帶你去你最想去的環(huán)球影城。”爸爸和兒子視頻聊天,“爸爸,我們班明明她爸爸要帶她去月球呢。”“去月球要20億呢,我一輩子也掙不到這個數(shù)啊。”“爸爸我開玩笑呢,明明她爸爸是大公司老總,咱家能跟她家比嘛。”“哈哈哈哈,嚇?biāo)腊职至耍〉饶阌辛顺鱿ⅲ€想讓你帶我去呢。”......
過了一周,子明準(zhǔn)時出現(xiàn)在楊老師家里。楊老師很熱情招待了他,然后對他進(jìn)行了輔導(dǎo)。
“這個信息技術(shù)高考在我上學(xué)的時候并沒有,是10年前剛剛加上的。一開始滿分是100,而且只在部分發(fā)達(dá)省份考,后來因為人口老齡化加劇,青年信息人才越來越緊缺,2043年開始上升到了150分,并推廣到了全國,統(tǒng)一上機(jī)考試,時間兩個半小時。
首先是60分的選擇題,這個考的就是計算機(jī)基礎(chǔ)知識,什么windows操作啊,什么進(jìn)制轉(zhuǎn)換呢,我相信你應(yīng)該沒什么問題,這些題目一定要快,必須1分鐘就要一道,30分鐘內(nèi)解決戰(zhàn)斗。然后就是6道編程題了,每道15分。
但是高考和比賽的區(qū)別是,高考在中間不會告訴你做的對不對,只有考試結(jié)束之后才會判分,所以你120分鐘做完,和150分鐘做完,結(jié)果是一樣的。這就要求你必須非常仔細(xì),一遍就要做對。不要指望著讓OJ幫你調(diào)BUG。不過呢,就算你寫的不對也沒關(guān)系,test case和test case之間是相互獨立的,你通過了這個test case就給這個分,全通過了就是滿分。
另外,高考是不限語言的,但是所有語言的time limit都一樣,你用python當(dāng)然OK,因為運算時間很充裕,復(fù)雜度只要正確就行,但是呢,如果你用C++可能會有額外的好處,衡水中學(xué)在入學(xué)時就強(qiáng)制所有學(xué)生都用C++。我記得2044年上海的題目,出題者本來是想要大家用O(n log n)算法的,但是限時給的太長了,如果你用C++再加上一些優(yōu)化,O(n^2)也能拿滿分,最后好多人暴力過了。判卷組本來想縮短時限重判的,結(jié)果因為大家已經(jīng)知道自己成績,社會反對聲浪太大,只好作罷,你看,用c++白撿了10分,還省了大量時間。所以如果你現(xiàn)在上高二,我會建議你改C++,但是你是高三,所以你可以選擇不改。
前兩道題,就是一些數(shù)組,字符串的題目,考察最基本的前綴,后綴,二分,雙指針,哈希表之類的,這些題目,是送分題,一分都不能丟的,而且要10分鐘一道。
中間兩道題,一般是二維數(shù)組或者圖之類的,需要用到各種搜索,BFS,DFS,或者一些圖論基礎(chǔ)知識,比如union find,dijkstra之類的,這些題目,如果你想要上雙一流,也是必須要拿下的,要做到20分鐘一道。
最后兩道題要花一個小時完成,第五題容易出奇葩的題目,或者是幾個知識點綜合起來的綜合題,或者需要用到線段樹進(jìn)行優(yōu)化,甚至可能會出幾何和數(shù)論。而第六題,就是臭名昭著的動態(tài)規(guī)劃了。這兩道題,以你目前的水平,是拿不下的,但是你可以從里面搶分,千萬不要空著。注意,你哪怕用最暴力的方法,也能拿到大約1/3的分?jǐn)?shù),前面如果再不扣分。你就有130了,足夠你上雙一流的。不過你要是想上清北華五,那就要至少140分,也就是選擇題全對,然后最多有一道題只會做small test case,剩下的都要滿分。
而且,動態(tài)規(guī)劃,千萬不要畏懼,雖然千變?nèi)f化,其實也可以分成幾大類的,背包問題,樹形DP,博弈論.....你現(xiàn)在水平不高,你只要記住,動態(tài)規(guī)劃,就是記憶化的遞歸,你只要往這方面想,絕大部分題目你都是可以解決的,至少可以拿到大部分分?jǐn)?shù)。
雖然題型分布一般是這樣,但是高考也有不按套路出牌的時候,比如去年最后一題是貪心+最小堆,而動態(tài)規(guī)劃放到了第三題的位置,難倒了一大片,還有我記得前年某個省,最后一題是概率題,需要用到排列組合,而排列組合需要存儲中間結(jié)果,取模需要用到數(shù)論知識,否則大數(shù)據(jù)會超時...... 雖然中國剩余定理還有歐拉定理什么的是超綱的,會在考試的時候給你寫出來,但是掌握了沒虧吃,畢竟時間是最寶貴的.....
最后想說,學(xué)習(xí)算法,最關(guān)鍵的還是多練習(xí),尤其是練習(xí)自己的薄弱環(huán)節(jié),刷自己的強(qiáng)項題固然很爽,但是沒什么效果。衡水中學(xué)的學(xué)生,三年下來要做好幾千道題,他們每周要搞兩次編程比賽,全校大排名,每個班的最高名次和平均名次都會算到教師績效里。而且,他們搞出來的那個系統(tǒng),不僅強(qiáng)制學(xué)生把代碼寫規(guī)范,還能通過每個學(xué)生的答題情況來分析他們的弱點,專門給每個學(xué)生出他們大概率做錯的題目,比如一個學(xué)生binary search已經(jīng)爐火純青,但是DFS經(jīng)常寫錯,那么系統(tǒng)就會大概率給他出DFS相關(guān)題目,很少出binary search。要不說那邊學(xué)生平時用那個系統(tǒng)做題非常痛苦,但最后高考成績都很高呢!雖然這些他們老師在課上也說過,但是子明還是聽的津津有味。后來老師又給他輔導(dǎo)了幾道錯題,擴(kuò)展了很多知識點,兩個小時很快過去了,老師把把子明送走,說:“現(xiàn)在努力絕對來得及,千萬不要對自己失去信心!只要聽我的,把我給你布置的題目刷透,你高考上130沒問題。”
在回家的路上,子明充滿了斗志,說道:“不就是區(qū)區(qū)算法嘛,有什么好怕的,來啊高考!看我6月把你打的落花流水!”
這個時候子明的手機(jī)響了,是他的朋友小洋:“小明啊,下周日上午我們一起踢球怎么樣,咱們初中同學(xué)長庚也加入呢。”
子明又有點心癢癢了,想偷偷去,不告訴媽媽,后來覺得有點不好,就在電話里跟媽媽說了,沒想到媽媽爽快答應(yīng)了“你既然跟我說了,說明你現(xiàn)在還是知道分寸的,踢球沒什么不好,可以放松你的大腦,你這次可以去,但是你要用一次周賽前1萬名的成績來回報我。”“好!”子明高興的說道。
· END ·
熱門推薦:
PS:如果覺得我的分享不錯,歡迎大家隨手點贊、轉(zhuǎn)發(fā)、在看

