1. 程式人生 > >[轉]NOIP考試必看

[轉]NOIP考試必看

調用 tle sta windows cpp 時間 需要 普通 mit

轉自:http://blog.csdn.net/c20180630/article/details/53158021

說的有不少還是深得laj心的 去年惜敗noip也許是對laj浮躁的懲罰吧 今年laj卷土重來了,一定不能犯低級錯,這次laj不僅僅是去拿省一了,還要為後面的NOI做準備了 _(:зゝ∠)_

1.比賽前一天晚上請準備好你的各種證件,事先查好去往考場的路線。

2.比賽之前請先調整你的屏幕分辨率到你喜歡的大小。

3.比賽之前請把編譯器的字體調為你平時慣用的字體,尤其是註意這種字體中的逗號,點,1,l 這種易混淆的字是不是區分明顯。

4.在不影響視野的情況下,請將字號盡可能調大,方便查錯. 壓縮包或許還不能解壓,但是文件名已經可以知道了,在選手目錄下用代碼模板建好所有文件,包 括.c/cpp/pas、.in、.out。

5. 開始比賽,不要急於看題目,將試題第一頁的時間、內存限制等等一字不落地看完, 把每題的時空限制寫在草稿紙上。

6. 看題目時不能走神,看完題目後將其歸入某幾個框架中,包括:模擬/枚舉/搜索/貪心/動態規劃/圖論/分治請將題目通讀完以後,再開始深入思考你認為最容易的一道題。

7. 根據輸入數據的範圍大致確定算法復雜度,以下均是可能情況,不絕對:

20:2^20=一百萬,O(2^n),搜索

100:100^3=一百萬,O(n^3),Floyd/搜索

1000:1000^2=一百萬,O(n^2),動態規劃/圖論

500000:O(nlog(2,n)),二分答案/二分查找/快排/歸並

1000000:O(n)或 O(1),數學問題/改變思維方向/貪心

即使這道題再容易,也不要著急寫代碼,請先明確自己每一步要幹什麽後,再開始寫,輕敵會是你最大的錯誤。

8.即使這道題看起來再沒法做,也不要提早放棄,這個時候紙和筆會是你最好的朋友,自己嘗試幾個例子,也許你就會找到答案。

9.請一定先明確自己要幹什麽之後再寫程序,不要走一步想一步 寫下代碼前,必須保證有充足的思考時間,有成熟的想法後再動手。寫代碼前,盡量用多而強的數據去測試想到的算法,畢竟代碼寫完後再測試就浪費很多時間了不能想一點寫一點,就算是輸入部分也要在整體思路理清後再寫。

10.如果這是一道動態規劃題,請先把轉移方程寫在紙上再編程。

11.如果思考 30 分鐘仍一頭霧水,沒有可以實現的算法,請你果斷屏蔽掉 100%的那一欄數據,開始寫60%,50%乃至 30%的算法——在 NOIP 裏面,30 分絕不是小數目。

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

13.雖然 1s+128MB 內存 (這是以前的了,現在應該是 1s + 256MB) 是標準配置,不過也不是每道題都是這樣的,還是請認真閱讀試卷首頁的試題說明。

14.計算內存的方法:數組大小*類型長度/1000 / 1000=所占內存 MB 數,int 類型長度是 4, long long=8。

15.如果對大規模數據的算法正確性不敢保證。可分段處理:先寫一個暴力程序應對小規模數據,再寫一個高效程序應對大規模數據。以函數方式實現。這樣也方便後續對拍。

16.寫完程序之後,請一定不要忙著編譯,請一定要將你的代碼從頭到尾通讀一遍,也就是靜態查錯,這是整個編程過程中最重要的步驟,有的變量重復調用問題調試的話,一個小時也看不出來,靜態查錯可以一下指出錯誤。

17.靜態查錯請註意以下方面:

(1)是否寫上了 using namespace std?

(2)數組開得是否夠大?

(3)變量類型是否正確,答案和中間結果是否會爆 int?

(4)memset 時,所填的 sizeof(XX)的 XX 是不是匹配?大小是不是正確?

(5)外層循環與內層循環的 i,j 是不是混用了?

(6)循環變量的枚舉範圍是否正確,是否會數組越界?

(7)涉及到邊界處理、加一減一之類的問題,請在紙上舉個例子,標上下標以後,在編程時參照紙上的下標寫

(8)這個程序是在執行你想讓它執行的步驟嗎?

(9)讀入優化處理負數情況了嗎?在小規模數據時請不要讀入優化,反之,則一定要讀入優化。

19.通過樣例後,請你一定不要放松警惕,因為樣例並不能覆蓋所有的情況,請自己設計幾組大數據,爭取卡死你的程序。特殊規律的數據,例如全是最小值,全是最大值,單調上升/下降數據最能影響程序效率與正確性。

20.如果出現問題,請你調試你的程序,請一定要分模塊調試,不要從頭跟到尾。

21.如果你已經設計不出能卡住你的程序的數據,恭喜你可以做下一題了。

22.如果你用的是 windows,請你註意把 system(“pause”)註釋掉。

23.為了萬無一失,請你用 return 0 結束你的程序。

24.在內存允許的情況下,能開普通隊列就不要用循環隊列,能開下普通數組就不要用滾動數組。

25.在時間允許的情況下,能暴力就暴力,高精度能不壓位就不壓位,優化不需要的就不要。

26.總之,在不超限制的前提下,能不優化就不優化,以減少代碼量和出錯概率為第一原則。

27.當比賽還剩下 5~15 分鐘的時候,請不要再改動你的程序,即使你懷疑它對你的一個輸入給出了錯誤答案,因為你自己算出的結果也有可能是錯的。

28.這個時候請你檢查是否註釋掉了該註釋掉的東西,文件名是否寫對,文件夾是否建對,請一定反復檢查!

29.請記住,NOIP 不怕暴力,怕瞎算,不怕不會,怕不敢,有時間的話一定要寫一個暴力程序去對拍,驗證算法的正確性。

30. 沈著,冷靜,沒有思路上廁所。做能力範圍內的事,盡力就好。不擔心別人強大,小心自己失誤。自己做得完美,就無怨無悔。

31.常用的測試結果:

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無法編譯

32.復習提綱:

(1)數學思維題
(2)高精度計算(加,減,乘,除)
(3)幾種排序算法的比較和靈活運用
(4)遞推遞歸題
(5)分治算法(歸並排序,求逆序對,二分思想的靈活運用)
(6)貪心算法
(7)動態規劃(幾種背包問題,最長不下降序列,石子歸並,最長公共子序列)
(8)隊列,堆棧,樹型結構的典型問題
(9)DFS,BFS(記憶化搜索,高效剪枝)
(10)最短路徑(Floyed,Dijstra,Bellman-Ford,SPFA),最小生成樹(kruscal,prim),並查集
(11)字符函數,結構體內聯函數,重載運算符,大根堆,小根堆,優先隊列(黑科技。。。)

33、解壓考試文件(密碼有大小寫),爭取一遍通過。
34、根據題目,建好考試文件夾(CQ-0001),生成考試題目的cpp文件,把頭文件默寫出來,簡單調試一下程序,輸入輸出文件。
(1) 默寫頭文件
(2) 文件結束

[cpp] view plain copy print?
  1. fclose(stdin);
  2. fclose(stdout);
  3. return 0;

(3)靜態查錯,制造特殊數據(極小,極大,全相等,分母不等於0)
(4)隨機函數自動生成數據,對拍程序。

未完待續...

[轉]NOIP考試必看