新手如何參加信息學競賽NOIP,怎么入門(常見問題解答)?


 

  新手學信息學競賽如何入門,知乎上有一個話題討論,我們也引用一些比較優質的回答給各位同學和家長一些參考,結合一些常見學習問題作出總結。本篇文章摘自清北學堂noipnoi訂閱號;2019NOIP夏令營報名正在進行中,可前往訂閱號報名和咨詢。

問:高一新生如何准備信息競賽?
答1:下面七點按難度從低到高排序:

1.跟着學校的步伐。關注任何動態。

2.買台筆記本。

3.自己注冊一個博客,或者開一個筆記賬戶。

4.買一些書如《算法競賽入門》《算法導論》並認真刷。

5.放棄自己的休息時間。

6.接受成績的下滑和自己天分的不足。

7.准備好一顆懂得放棄,也懂得不放棄的心。(石政宇)

答2:

客觀的前提條件:

  • 數學成績要好些

主觀的前提條件:

  • 能夠放棄自己的休息時間(有可能還要擠掉晚修),並且應對成績下滑時老師、家長的責難;
  • 接受「信息學競賽是個高風險投資」的事實;
  • 接受「自己真蠢(天分不足)」「總有人比自己小,還比自己強」的事實;

如果不滿足前提條件不是不能搞信息學競賽,只是會很難進復賽,更不用說拿獎。

答3:

買一些書自學吧

剛開始學就是劉汝佳的紫書和藍書,算法導論,信息學競賽數學一本通什么的。

還有就是做題,多刷題!!!

答4:

這里是快退役的高二oier,我們學校去年才開重視競賽,我個人也走了許多的彎路。開始學習的話建議從啊哈算法入門,先培養興趣,這本書極其通俗易懂。看完之后可以刷一下普及組的試題。接下來可以看算法競賽進階指南(這是一本好書),把后面的題做完就差不多noip400+了。如果是弱校的話(並且在強省)不太建議沖刺省隊,拿個省一就差不多了。oi路上最重要的是堅持,千萬不要像我一樣頹廢。(circlestar回答)

其他:

參加NOIP,首先要學的是C++。

當然C++只是基礎,信息學競賽的核心是算法和數據結構,需要選手分析問題,並通過算法和數據結構大大提升程序效率。小學生學習的話建議先進行一下變成入門學習。
問:初中生學信息學競賽應該參考哪些教材,從哪些方面開始努力?



答1:

以一個oier的身份說說我的人生經驗
如果只是為了拿獎而學的的話,主要心思還是得在正常學習上。
如果是短時間的興趣的話,只用一點周末學習吧,不會占用你太多時間,普及組的內容還是挺有趣的。
但如果你對oi具有熱情,希望成為那些神犇一樣的oi高手,那就需要長時間的投入了(也有可能因此成績下滑)。大部分在oi有名氣的人都會長時間的停課集訓,這可能對你來說還太早(畢竟你還在糾結要不要學)。

 

如果決定要學,就要趁着還早,空閑時間還夠,多打下基礎。oi也是需要數學基礎的,所以文化課也不能落下太多。

總之 oi的水很深 進去了就很難出來了。

初學者建議看看 信息學競賽一本通 或者是劉汝佳的算法競賽入門指南

(作者:heheheheehhejie)

答2:

首先是

1.家長支持(至少不反對)

2.班主任不反對(或者最好在理科實驗班)

個人智力水平不提(您肯定很強)

參加OI心態很重要呀,

要想清楚是不是真的喜歡   三分鍾熱度可不行吶

有抗挫折的能力        如果因為頭部文件漏寫省一降0分會退役嗎(我就這樣子辣現在想想還好當初沒退啊)

要有信心啊           既不要為自己是女生而自卑(,也不要因自己是女生而自豪QAQ)相信自己是很重要的啦

不要分心            不能專注很容易日漸頹廢啊(比如我QAQ)

能力方面,數學要好         tg數論題有噠

如果是這樣像您這樣pj省一肯定沒什么問題,開始是不需要太大天賦的

 

我覺得其實是否在外面上課並不是很重要的因素。因為對於很多人來說自學效果往往會更好。

不管您是否上課,學OI都需要

很多好書來引導(推薦劉汝佳的幾本,不介意可以再看一本通系列,《算法導論》,《Effective C++》,《C++的設計與演化》)

一個好的OJ

有人交流    不管是線上還是線下

多做有質量的題,最好是獨立做題嗯~

 

有一句話在學OI時給了我很大鼓勵:

>自己選的路,別說爬完了,死也要死在這條路上.

一起加油吧~(作者:Yukari)


答3:

我是gd高三學生,高一進入信息隊,高二拿到noip提高組一等獎。

入隊前有一定編程基礎。

能夠經常上機。

 

我主要自學。

我使用劉汝佳《算法競賽入門經典 第二版》和(掌握第一本后)《算法競賽入門經典 訓練指南》自學,大半年后達到和初一進隊的人的水平。

這兩本書是我覺得最適合oi選手的兩本書。

一本通的很多代碼和劉汝佳的書雷同。

總之,自學是可以的。

同時你也不要貪快。

要找個oi學長學姐帶你。(作者:張瑯小強)



答4:

主要的其實dalao們都給你說得差不多了,我就隨便瞎談點兒別的吧。

我當初也是先自學的C#,但C#的編程和OI的編程差別還是挺大的其實。所以千萬不要以為“對C#感興趣”就相當於“對信息學競賽很感興趣”。

我個人的建議就是,先找本劉汝佳的紫書,照着上面的先學一段時間。當你把基本的語法(至少八皇后能獨立寫出來)都學得差不多了,學到一些基本的數據結構的時候,再看看你是不是真的對OI感興趣。

至於現在參加競賽會不會晚之類的問題,現在都統統不要考慮。如果你對這個真的有熱情、有天賦,還肯下功夫的話,國際金牌都不一定啊。泥看,高一搞oi最后簽約清北的也不在少數啊。

欸對了,如果你覺得自己真的對這個很感興趣的話,我當初花了一千多買了計蒜客的信競的課,你要想要的話我可以把賬號共享給你。

希望能夠對你有些幫助吧。加油!(作者:唯虛集道)

 

(其他相關問題):

問:參加信息學競賽的好處?

答:NOIP取得好的成績對參加名校的自主招生有一定的幫助。進入國家集訓隊的,可以直接保送清華北大。其他獲獎選手可通過夏令營、冬令營、科學營、體驗營等各種自主招生渠道爭取到降20-60分甚至本一線的錄取優惠。

 

清華大學、北京大學等重點高校每年都會於信息學同學進行簽約,包括:無條件降至一本線錄取、 有條件降至一本線錄取、 有條件降 60 分、30 分等不同檔次的降分優惠。

 

問:幾年級開始准備NOIP最好?

答:有的孩子小學就開始學習,或許可在小升初時享受到信息特長生優惠(根據當地政策而定)。

 

進入初中后,可爭取初一拿普及組一等獎,初二開始可直接參加提高組競賽,或許可在中考升學時享受優惠(根據當地政策而定)。這樣高一就可以沖刺提高組一等獎,並且可以沖省隊、沖國賽了。

 

其實,更多的孩子可能是從初一開始,進程和小學開始差不多,參賽也很從容。如果初中畢業才開始,那么節奏可能會有一點緊湊了。

 

02 備賽小技巧(建議收藏)

下面我分享一下我個人備賽過程中的自己覺得比較好的一些書籍、網站以及一些小的技巧。

首先是入門階段。

語言基礎方面,首先要學習C++,但並不需要面向對象的知識,基本上是C和STL,C的部分可以看《啊哈!C語言》,C++和STL的部分可以看《算法競賽入門經典(第2版)》的語言篇。

除此之外,可以多刷一些歷年NOIP的題目,以及省選的題目。

以上需要大量投入時間,刷題的時候注意盡量刷“剛好能做出來”的題目,思考一段時間(比如一天)之后還沒有頭緒,或者程序一直調試不出來的話,可以看一下書上或者搜索一下網絡上的資料,一般的題目都會有人在網上發題解,但是千萬不要依賴題解,自己思考的過程才是最重要的。

除此之外,還要加強各類題目的訓練。

 

再就是進階階段。

對於有進階需求的同學,建議大家可以詳細看一下《算法競賽入門經典(第2版)》以及《算法競賽入門經典(訓練指南)》,並盡量完成上面的練習題。

 

王小宇:

首先聲明,我是一個高一的OIer,有的東西只是自己的感受,大家不要太計較啦

 

我是從初一下學期開始學習的,現在也是將近三個整年了。

基礎的東西一定不能忘,NOIP2015是我第一次參加NOIP,當時稀里糊塗的過了初賽,復賽之前掌握的東西真的很少,復賽前一天我才學到高精度計算。那時候用的是Pascal,學習數組的時候因為比較趕,所以沒大練習,頂多是能比較基礎地使用一維數組。結果,相信大家都記得,NOIP2015普及第二題,掃雷,需要開二維數組。當時我一看這道題就懵了,完全想不起來二維數組怎么開了,怎么調試也過不了,最后,普及二等。

 

其實,還是我太弱了,畢竟這么基礎的東西怎么能忘掉呢。

 

NOIP2016的時候,初三,那時候數據結構只是學了點基礎,但對於普及組來說也足夠了。復賽的時候,可以說是基本沒用到數據結構和算法,最多就是第三題用了一個桶排序,前兩題全部暴力模擬,但是當時模擬打的比較穩,所以前兩題AC。結果,NOIP2016普及一等。

 

所以說,最基本的暴力模擬也是一定要熟練的,畢竟很多時候正解是很難想出來的,這時如果你的暴力打的穩,並且優化的好的話,只要數據不是很大或者很坑,也是能拿到不少分的。

 

其實,歸根結底,還是要努力學啊,如果你能把考點內容全都掌握的很熟練,那還用什么暴力模擬呢?隨手一打那就是550+啊。如果心態好、精神充足的話,AK也是有可能哦。當然,那需要很扎實的知識基礎和豐富的經驗了。

 

還有,我覺得一個好的學習氛圍是很重要的。如果你有很好的教練團隊或者水平很高的同學的話,氛圍肯定是不一樣的。在這種氛圍下,只要你能認真努力,我想就算想學不好也很難吧。

下文是NOIP吧吧友(賬號:lm40015410)對個人NOIP 之旅的一個總結,主要針對初次參加NOIP的普及組新生。總結了教訓,也參考了一部分神犇的資料,希望能給各位新生們一個參考。

距離NOIP2017還有三個多月的時間,這幾個月可以干很多事,這也就是我接下來要說的。送給大家一個公式:競賽成績=實力x經驗 給大家解釋一下這個公式。我有一個同學,可以算是神犇級別的了吧。他的競賽實力相當牛b,單源、DP什么的偽代碼能輕松默下來,紅黑樹、博弈論甚至FFT都能講得頭頭是道,而且僅僅是一名初二學生!

 

去年他參加了NOIP普及組的比賽,結果出人意料——只有第一題分解質數(好像叫這個名吧...)得了10分,其他題全部爆0。事實上,他所有題都做了,但是他是抱着AK的心來的,所有的題他都是只過了樣例就去做下一道了。你們也知道的,CCF的樣例向來都很弱,尤其是去年...他競賽實力弱嗎?一點不弱,他是我們那個考場唯一一個文化之旅寫了SPFA這個正確算法的人。但是,很可惜,由於某變量忘記置0導致爆0,考試結束的時候甚至連樣例都沒試。

 

第一題,一個邏輯錯誤;第二題,某情況下變量加不+1但是沒考慮;第三題,強行按照自然數拆分的辦法寫的DFS;這些錯誤很小,但是這千里之堤就毀於小小的蟻穴了!他的競賽實力很強,但是做題經驗幾乎為0,他幾乎所有的時間都用在了研究算法上,很少做題。



我相信看我這篇文章的同學里也有類似,一段代碼出來,大的框架沒有問題,就是WA(1),后來抓耳撓腮找了幾個小時才發現就是諸如變量初值,變量置零,遞歸形參、局部全局變量用錯這樣的小問題。實不相瞞,我直到現在依然如此。為什么?答案很簡單,做題少了!做的題多了,錯誤出得多了,也就有經驗了,熟能生巧嘛!

 

拿到一道題,有經驗的人會先按照人類處理該問題的思維去構造一個數學模型,然后去掉不必要的模擬,找可行優化,選用合適的數據結構和算法去實現,整個過程10多分鍾就好了,絕對比你邊寫邊想算法犯了邏輯錯誤去查幾個小時要划算!

 

呵呵,說的偏了,但都是大實話。前言的最后送給大家幾句話:
不要好高騖遠,即使是大神的第一次也不會順風順水;
不要掉以輕心,即使是NOI也有忘記刪調試輸出、變量打反、沒用文件這樣錯誤的人;
不要垂頭喪氣,CLJ也是高三才拿到IOI冠軍!我們還年輕...

 

陳立傑(CLJ),1995年8月1日出生,現就讀於清華大學交叉信息學院。自2010年8月以來,多次在信息學奧賽(OI)中取得令人震驚的好成績,是OI界的奇跡人物之一。

 

考場瞬息萬變,有不會做的題很正常。平心靜氣,先做簡單的題,如果一道你有正確算法的題答案卻不對,很可能是小錯誤,不要輕易放棄做別的題,那樣可能會讓你直到考試結束一道題也沒做出來。

 

多做題,多思考,心要靜!

注釋:(1) OJ上的測試結果。

WA :wrong answer 錯誤的答案
AC:Accepted答案正確;通過
TLE:Time Limit Exceed 超時
OLE:Output Limit Exceed超過輸出限制
MLE:Memory Limit Exceed超內存
RE:Runtime Error運行時錯誤
PE:Presentation Error格式錯誤
CE:Compile Error無法編譯

 

初賽

初賽的考察內容的一部分是計算機的基礎知識,比如進制轉換,工作原理,算法原理、歷史事件名人等。這些對於大部分第一次參加NOIP的同學來說應該比較陌生,這樣的知識只能通過平時的積累,從現在就開始搜索資料,有意識的去記憶。

另一部分是數學內容,包括排列、組合等大概高中的數學知識,需要下載資料去研習,背公式。

最后一部分是程序完成。如果說前面2部分還有補習的希望,最后這一部分完全是靠你的做題基礎,沒有捷徑,只能靠你平時多做題,對部分簡單算法有些了解。

初賽形式為筆試,描述語言為C/C++或Pascal。各省市初試成績在本賽區前百分之十五的學生進入復賽,其分數不計入復賽的成績。初賽時間為10月的第三個星期六下午2:30 - 4:30舉行。

1、選擇題:共20題,每題1.5分,共30分。每題有4個備選答案。試題內容包括計算機基本組成與原理、計算機基本操作、信息科技與人類社會發展的關系等等。(普及組為20道單選題,提高組為10道單選題和10道不定項選擇題,不定項選擇題與答案完全一致才得分,多選或少選均不得分)

2、問題求解題:共2題,每題5分,共10分。試題給出一個敘述較為簡單的問題,要求學生對問題進行分析,找到一個合適的算法,並推算出問題的解。答案以字符串方式給出,考生給出的答案與標准答案的字符串相同,則得分;否則不得分。

3、程序閱讀理解題:共4題,每題8分,共32分。題目給出一段程序(沒有關於程序功能的說明),有時也會給出程序的輸入,要求考生通過閱讀理解該段程序給出程序的輸出。輸出以字符串的形式給出,如果與標准答案一致,則得分;否則不得分。

4、程序完善題:共2題,第一題10分,共4空,每空2.5分;第二題18分,共6空,每空3分。兩題共28分。題目給出一段關於程序功能的文字說明,然后給出一段程序代碼,在代碼中略去了若干個語句並在這些位置給出空格,要求考生根據程序的功能說明和代碼的上下文,填出被略去的語句。填對的,則得分;否則不得分。



復賽:考前准備

草稿紙考試一般會發放,比較大,需要你帶一、兩支筆。應該可以帶水,但是別喝多了,貌似上廁所比較麻煩。考試這幾天就不要再學習新的東西了,時間不夠,學也學不精,反而是浪費時間。



建議自主復習一下舊的知識,比如字符串處理、快速排序這樣的知識。頭天晚上不要嗨到太晚(熬夜打DOTA、竄宿舍泡妹紙什么的...),早點睡。

第二天大概6點左右就起床吧,剩下的時間根據需要調配,早飯、午飯大概8成飽就足夠了,考試前記得上個大號- -哦對了,參賽證千萬別丟了!建議快考試的時候再掛到脖子上(我們這有個仁兄把准考證弄丟了- -最后怎么解決的不知道),平時別拿出來顯擺。



還有就是一般住宿的學校會給你學校的平面圖,考場在哪、食堂在哪、宿舍在哪一定研究明白了,別找不到地方就蛋疼了...

比賽提前30分鍾進場,熟悉考場環境,找到自己座位及廁所位置,更改軟件、系統為自己所喜歡的設置,如:取消桌面背景、更改屏幕分辨率、更改虛擬內存等。利用熟悉考場時間寫下重要且易錯內容,如:快速排序(Qsort)、文件操作命令等。

試題解壓密碼會影響一個人的心情,一定要一次輸對,注意大小寫,不要邊輸入邊檢查,要對自己有自信。禁止攜帶U 盤、MP3、計算器、手機等任何與存儲、計算、通信有關的電子設備;禁止攜帶一切書籍和其他無關物品;一經發現按作弊處理。

還有,考前一定要看《騙分導論》!!!(注:這么誤導小朋友不好吧!)

在Oier中,有一句話廣為流傳:任何蒟蒻必須經過大量的刷題練習才能成為大牛乃至於神牛。這就是著名的lzn定理。然而,我們這些蒟蒻們,沒有經過那么多歷練,卻要和大牛們同場競技,我們該怎么以弱勝強呢?答案就是:騙分。那么,騙分是什么呢?騙分就是用簡單的程序(比標准算法簡單很多,保證蒟蒻能輕松搞定的程序),盡可能多得騙取分數。騙分是蒟蒻的有力武器,可以在比賽中騙得大量分數。但是,最后我還是要說一句:不騙分,是騙分的最高境界。

黎大豬:

利益相關:當年noip拿過全國一等,13年高中畢業,自招到某985,現在剛畢業入職某司嵌入式開發崗。答這題應該挺適合的。



准備noip總結可以分三段:
1、noip主要學的是算法,與單片機和嵌入式關系不大,推薦去學c++(好像noip說即將要取消c語言了?),c primer plus或者c++ primer plus都挺好的,雖然說那個譚浩強的什么老是被吐槽,但是作為入門還是挺好的,語法這些不需要深究最重要是會用,能描述出你想表達的算法,若是時間緊也可以在學習算法中鞏固語法的知識,我看你說看了一半c primer應該也差不多了。
2、然后就要學一些算法知識了,我那時主要的算法有:數學遞推、回溯、貪心、分治、搜索、動態規划、樹、圖論,我那時候是有老師教的,大學時看《數據結構與算法分析》感覺也基本覆蓋到了,這方面應該挺多書的很好找。

@BillXu2000

推薦的那本《算法競賽入門經典》看了一下挺好的。 


3、最后就是多刷題了,多看人家的解題報告,等到了一定境界后就會發現其實來來去去就那幾種題。我記得到高三我那個專門放代碼的文件夾已經有幾百M了,各種題庫,那時候時北大的那個oj挺出名的,還有各種模擬題,時間一定要掐好,我那個時候是3小時4題,(現在好像又改了)。



你有什么好的建議嗎?歡迎留言哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM