平時上機練習的注意點(NOIP2018)

1、比賽

A考前階段

一、提早15分鐘入場,利用好這幾分鐘的時間,作好準備工做。
二、靜坐調整心態,適當的深呼吸,沒關係張、坐立不安等。
三、設置編輯器IDE:i.默認路徑 ii.窗口大小 iii.TAB寬度 iv.編譯功能 v.重啓IDEweb

i 你喜歡的屏幕分辨率。ii 平時慣用的字體。iii 字體大小不要過小方便查錯。算法

四、準備文件:i.建立.in .out。 ii.建好模板(頭文件,輸入輸出) iii.測試模板準確無誤編程

a. 同時注意文件名,保存要求,目錄結構
b.某些省份(如 河南)要求同時提交.exe文件,注意不要漏交。)數組

五、休息|再次調整心態:不要去想結果,只看過程,努力了就必定不會白費。數據結構

B看題階段

一、不要急於看內容,先將試題第一頁的時間、內存限制等等一字不落地看完。框架

i 雖然1s+128MB內存 (這是之前的了,如今應該是 1s + 256MB) 是標準配置,不過也不是每道題都是這樣的,仍是請認真閱讀試卷首頁的試題說明
ii. 計算內存的方法:數組大小*類型長度/1000 / 1000=所佔內存MB數,int(Pascal:longint)類型長度是4, long long (Pascal: int64) =8
iii. 記不住的話,記住int (Pascal: longint) 型數組在128MB內存下最大開到2500 0000是比較保險的(佔100MB內存)編輯器

二、開始看題,看題時不能走神。從新描述並將題目抽象化簡,提出主幹信息。svg

讀的時候積極思考,看看這某句話究竟是個什麼意思,要會轉換。好比對於有時間的問題,到底把時間當作一個點,仍是一個區間。學習

三、結合樣例看題目,確保本身題意理解沒有錯(若是樣例錯了回到上一步修改主幹信息)。測試

具體題目具體分析,必定要符合題意。題沒讀懂就開始作,100%是錯的。題錯,思路也就錯,時間浪費了, 數據仍是1個都不過。

四、看完題目後將其納入某幾個框架中,包括:模擬/枚舉/搜索/貪心/動態規劃/圖論/分治
五、根據輸入數據的範圍大體肯定算法複雜度,如下均是可能狀況,不絕對:

202^20=一百萬,O(2^n),搜索
100100^3=一百萬,O(n^3),Flody/APSP/搜索
10001000^2=一百萬,O(n^2),動態規劃/圖論
500000O(nlog(2,n)),二分答案/二分查找/快排/歸併
1000000O(n)或O(1),數學問題/改變思惟方向/貪心
C寫題階段

一、寫下代碼前,必須保證有充足的思考時間,有成熟的想法後再動手

所謂Think Twice, Code Once, 必定要想好了算法,思路清晰了再編。
對於稍可貴題目:分析問題時遇到一些即興問起的狀況,立刻要深刻下去,看已有的算法思路是否有問題。經驗證實,這種即興提起的問題每每是決定算法正誤的關鍵問題。這是一種本能的質疑,本能的差錯,必定不要想:我一會再來看這個問題。必定要當即想清楚,看算法怎麼樣處理才能解決這樣一個問題。確認算法沒有什麼錯誤了再編。若是思路沒清晰,算法不對,編到一半時才發現錯了,這種狀況沒有考慮到,浪費了不少時間,或者編完了都還不知道算法是錯的,最後因爲樣例特殊,過了樣例,覺得對了,但實際上只得10分,或者根本不得分。
對於簡單的題:也必定要考慮全面,不是編好了程序再來考慮全面,而是想算法的時候就要考慮全面。不要知道個大概就開始寫,後來發現一些特殊數據要做特殊處理,又把程序改過去改過來,改得面目全非,最後總是改不對,不但影響心情,並且仍是錯的。
總的來講:想好算法,寫下各個變量的意義,明確使用的時候都是遵守這些意義的。寫下關鍵的句子,分清各類狀況,這個階段最重要,必定要仔細,不要急着編程。理清了思路再編程,寫好了關鍵句子再編程,弄清楚了變量再編程,速度會很快,並且正確率也很高。不少人就是犯不思考就編程這個錯誤,最後本身就昏了。因而浪費大量時間,並且題也作不出來。

二、不能想一點寫一點,就算是輸入部分也要在總體思路理清後再寫。

三、寫代碼前,儘可能用多而強的數據去測試想到的算法,畢竟代碼寫完後再測試就浪費不少時間了

思考算法的時候,必定要考慮到特殊數據,或一些特殊狀況。寫完了,還要再看各變量是否帶對,是否有筆誤。
寫完後也要:本身設計幾組數據,爭取卡死你的程序。若是你已經設計不出能卡住你的程序的數據,恭喜你能夠作下一題了。

四、永遠別去寫從未接觸過的算法/數據結構(考場上), 同時減小負優化。

i.在內存容許的狀況下,能開普通隊列就不要用循環隊列,能開下普通數組就不要用滾動數組
ii.在時間容許的狀況下,能暴力就暴力,高精度能不壓位就不壓位,優化不須要的就不要
iii.總之,在不超限制的前提下,能不優化就不優化,以減小代碼量和出錯機率爲第一原則

五、若是想不到思路,試着找規律。紙筆都是好的夥伴。

i. 即便這道題看起來再無法作,也不要提前放棄,這個時候紙和筆會是你最好的朋友,本身嘗試幾個例子,也許你就會找到答案
ii.若是這是一道動態規劃題,請先把轉移方程寫在紙上再編程
iii. 涉及到邊界處理、加一減一之類的問題,請在紙上舉個例子,標上下標之後,在編程時參照紙上的下標寫

六、若是實在想不到思路,就放棄。

i. 若是思考30分鐘仍一頭霧水,沒有能夠實現的算法,請你果斷屏蔽掉100%的那一欄數據,開始寫60%,50%乃至30%的算法——在NOIP裏面,30分毫不是小數目
ii. 不要由於一道題的時間丟了後面題目的分數。
iii. 看題要靈活,不要絆死在一道題,不要怕。NOIP的題不想就作出來,怎麼可能,確定是須要想的。可是最好先寫好寫的題,不必定是前兩道題。其實不少時候你是有能力作起的,只是你一看就怕了,也沒有去認真想,隨便敷衍想了一點特殊狀況的算法,認爲能夠騙到分。但經驗證實最後基本是沒有分,即便有,最多不過10。時間是3個小時,要積極一點,經驗證實,不少題想到必定時候便想出來了。而且很簡單。

七、心態

i. 若是你發現你旁邊的人寫得很快,請你放心,他的算法十有八九是錯的

D寫完階段

一、程序按照思路編完以後,查編譯錯誤。經驗證實,剛剛完成的程序不出編譯錯誤的概率基本爲0。
二、編譯所有修正後,千萬不要測樣例。必定是必要的調試手段。經驗證實,第一次就把樣例過了的概率很低,即便過了,在測本身的特殊數據的時候也會出錯。因此,編譯完後必定要靜態查錯。經驗代表,靜態查錯是頗有效果的。基本上每次靜態查錯均可以找到變量代錯的錯誤。特別是快排的I,J是否帶錯,DEC,INC是否搞錯,SWAP是否是加了VAR等等。

試想:
i若是沒有靜態查錯,就去測樣例,若是程序有錯,樣例不過,影響心情;
ii即便樣例過了,由於程序有錯,特殊數據也不必定能過;即便特殊數據也過了,程序有錯,評測的時候絕對會錯。
iii那還不如一開始就靜態查,即便發現錯誤,得到成就感,心情很好。
iv千萬不要慌着去測。要保證程序無錯,思路清晰,結構清晰了,而後再去測樣例,再去測特殊數據。
樣例過了不要得意,特殊數據過了不要得意,頗有可能還有不少特殊狀況你沒有想到。

三、若是程序錯了須要調試,必定要分模塊調試,不要從頭跟到尾。【具體轉調試技巧】
四、有多餘時間必定要進行對拍,即3個程序:生成數據、樸素算法、準備交的算法
五、交以前5-15分鐘千萬不要再改動代碼,主要留意代碼中是否還有測試程序時留下的痕跡。

i. 即便你懷疑它對你的一個輸入給出了錯誤答案,由於你本身算出的結果也有多是錯的
ii. 這個時候請你檢查是否註釋掉了該註釋掉的東西,文件名是否寫對,文件夾是否建對,請必定反覆檢查!

E結束階段

一、走出考場後,除非已是Day2,永遠別對答案
二、作好心理準備,也許作了兩道本身認爲會全對的,還作了一道本身認爲能過幾組的。可能只得50。這也是有過的事情。除了作好那幾個步驟,沒有其餘的辦法。認了吧。搬塊石頭砸天,也是沒有用的。
三、樹立正確的成敗觀。體驗第一,拿獎第二。每每能從失敗中學到更多的東西,獲得更多的感悟。成功當然好,失敗也不錯。成事在天。作到了本身作到的,就是另外一種意義上的成功。

2、練習

一、看題,寫題,寫完階段,都應該與比賽徹底同樣 二、作題前:合理的分配時間,選擇能力範圍內合適的題。提早學習題目會用到的知識。 三、作題時:要限時作,好比30mins作,不要死調。 四、作題後:必定要覆盤和總結。

相關文章
相關標籤/搜索