1. 程式人生 > >{福利}NOIP考綱總結+NOIP考前經驗談

{福利}NOIP考綱總結+NOIP考前經驗談

1.比賽前一天晚上請準備好你的各種證件,事先查好去往考場的路線
2.比賽之前請先調整你的螢幕解析度到你喜歡的大小
3.比賽之前請把編譯器的字型調為你平時慣用的字型,尤其是注意這種字型中的逗號,點,1,l這種易混淆的字是不是區分明顯
4.在不影響視野的情況下,請將字號儘可能調大,方便查錯
5.請將題目通讀完以後,再開始深入思考你認為最容易的一道題
6.即使這道題再容易,也不要著急寫程式碼,請先明確自己每一步要幹什麼後,再開始寫,輕敵會是你最大的錯誤
7.即使這道題看起來再沒法做,也不要提早放棄,這個時候紙和筆會是你最好的朋友,自己嘗試幾個例子,也許你就會找到答案
8.請一定先明確自己要幹什麼之後再寫程式,不要走一步想一步

9.如果這是一道動態規劃題,請先把轉移方程寫在紙上再程式設計
10.涉及到邊界處理、加一減一之類的問題,請在紙上舉個例子,標上下標以後,在程式設計時參照紙上的下標寫
11.如果思考30分鐘仍一頭霧水,沒有可以實現的演算法,請你果斷遮蔽掉100%的那一欄資料,開始寫60%,50%乃至30%的演算法——在NOIP裡面,30分絕不是小數目
12.幾個常用的複雜度參考:100以下——可能是搜尋;100~500——N^3,1000~5000——N^2,100000~500000——NlogN,500000以上——N或1
13.如果你發現你旁邊的人寫得很快,請你放心,他的演算法十有八九是錯的
14.雖然1s+128MB記憶體 (這是以前的了,現在應該是 1s + 256MB)  是標準配置,不過也不是每道題都是這樣的,還是請認真閱讀試卷首頁的試題說明

15.計算記憶體的方法:陣列大小*型別長度/1000 / 1000=所佔記憶體MB數,int(Pascal:longint)型別長度是4, long long  (Pascal: int64)  =8 
16.記不住的話,記住int  (Pascal: longint)  型陣列在128MB記憶體下最大開到2500 0000是比較保險的(佔100MB記憶體)
17.寫完程式之後,請一定不要忙著編譯,請一定要將你的程式碼從頭到尾通讀一遍,也就是靜態查錯,這是整個程式設計過程中最重要的步驟,有的變數重複呼叫問題除錯的話,一個小時也看不出來,靜態查錯可以一下指出錯誤
18.靜態查錯請注意以下方面
(1)是否寫上了using namespace std?    (這是C++的,Pascal就不用了)

(2)陣列開得是否夠大?
(3)變數型別是否正確?
(4)memset時,所填的sizeof(XX)的XX是不是匹配?大小是不是正確?    (Pascal 是 fillchar)
(5)外層迴圈與內層迴圈的i,j是不是混用了?
(6)迴圈之前,i,j是否定義了?
(7)輸入資料都輸入了嗎?
(8)這個程式是在執行你想讓它執行的步驟嗎?
19.通過樣例後,請你一定不要放鬆警惕,因為樣例並不能覆蓋所有的情況,請自己設計幾組資料,爭取卡死你的程式
20.如果出現問題,請你除錯你的程式,請一定要分模組除錯,不要從頭跟到尾
21.如果你已經設計不出能卡住你的程式的資料,恭喜你可以做下一題了
22.如果你用的是windows,請你注意把system(“pause”)註釋掉   ( 針對C/C++,Pascal 不存在 )
23.為了萬無一失,請你用return 0結束你的程式  ( 同樣 , 針對 C/C++ ,建議是必須加上 )
24.在記憶體允許的情況下,能開普通佇列就不要用迴圈佇列,能開下普通陣列就不要用滾動陣列
25.在時間允許的情況下,能暴力就暴力,高精度能不壓位就不壓位,優化不需要的就不要
26.總之,在不超限制的前提下,能不優化就不優化,以減少程式碼量和出錯概率為第一原則
27.當比賽還剩下5~15分鐘的時候,請不要再改動你的程式,即使你懷疑它對你的一個輸入給出了錯誤答案,因為你自己算出的結果也有可能是錯的
28.這個時候請你檢查是否註釋掉了該註釋掉的東西,檔名是否寫對,資料夾是否建對,請一定反覆檢查
29.今年賽制更改,沒有人知道究竟會變成什麼樣,所以,與其瞻前顧後,不如集中精力做出你眼前的題目來的實際
30.請記住,NOIP不怕暴力,怕瞎算,不怕不會,怕不敢,有時間的話一定要寫一個暴力程式去對拍,驗證演算法的正確性