天天看點

新手如何參加資訊學競賽NOIP,怎麼入門(常見問題解答)?

新手如何參加資訊學競賽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題,(現在好像又改了)。

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