你好,游客 登錄 注冊 搜索
背景:
閱讀新聞

信息學競賽經驗介紹

[日期:2019-10-28] 來源:  作者: [字體: ]

A考前階段 

1、提前15分鐘入場,利用好這幾分鐘的時間,做好準備工作。

2、靜坐調整心態,適當的深呼吸,不要緊張、坐立不安等。

3、設置編輯器IDE:

i.默認路徑

ii.窗口大小

iii.TAB寬度

iv.編譯功能

v.重啟

IDE

i 你喜歡的屏幕分辨率。

ii 平時慣用的字體。

iii 字體大小不要太小方便查錯。

4、準備文件:

i.創建.in .out。

ii.建好模板(頭文件,輸入輸出)

iii.測試模板準確無誤

a. 同時注意文件名,保存要求,目錄結構

b.某些省份(如 河南)要求同時提交.exe文件,注意不要漏交。)

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

B看題階段

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

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內存)

2、開始看題,看題時不能走神。重新描述并將題目抽象化簡,提出主干信息。

讀的時候積極思考,看看這某句話到底是個什么意思,要會轉換。比如對于有時間的問題,到底把時間看成一個點,還是一個區間。

3、結合樣例看題目,確保自己題意理解沒有錯(如果樣例錯了回到上一步修改主干信息)。

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

4、看完題目后將其歸入某幾個框架中,包括:模擬/枚舉/搜索/貪心/動態規劃/圖論/分治

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

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

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

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

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

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

C寫題階段

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

所謂Think Twice, Code Once, 一定要想好了算法,思路清晰了再編。

對于稍難得題目:分析問題時遇到一些即興問起的情況,馬上要深入下去,看已有的算法思路是否有問題。經驗證明,這種即興提起的問題往往是決定算法正誤的關鍵問題。這是一種本能的質疑,本能的差錯,一定不要想:我一會再來看這個問題。一定要立即想清楚,看算法怎么樣處理才能解決這樣一個問題。確認算法沒有什么錯誤了再編。如果思路沒清晰,算法不對,編到一半時才發現錯了,這種情況沒有考慮到,浪費了很多時間,或者編完了都還不知道算法是錯的,最后由于樣例特殊,過了樣例,以為對了,但實際上只得10分,或者根本不得分。

對于簡單的題:也一定要考慮全面,不是編好了程序再來考慮全面,而是想算法的時候就要考慮全面。不要知道個大概就開始寫,后來發現一些特殊數據要作特殊處理,又把程序改過去改過來,改得面目全非,最后老是改不對,不但影響心情,而且還是錯的。

總的來說:想好算法,寫下各個變量的意義,明確使用的時候都是遵照這些意義的。寫下關鍵的句子,分清各種情況,這個階段最重要,一定要仔細,不要急著編程。理清了思路再編程,寫好了關鍵句子再編程,弄清楚了變量再編程,速度會很快,而且正確率也很高。很多人就是犯不思考就編程這個錯誤,最后自己就昏了。于是浪費大量時間,而且題也做不出來。

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

3、寫代碼前,盡量用多而強的數據去測試想到的算法,畢竟代碼寫完后再測試就浪費很多時間了

思考算法的時候,一定要考慮到特殊數據,或一些特殊情況。寫完了,還要再看各變量是否帶對,是否有筆誤。

寫完后也要:自己設計幾組數據,爭取卡死你的程序。如果你已經設計不出能卡住你的程序的數據,恭喜你可以做下一題了。

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

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

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

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

5、如果想不到思路,試著找規律。紙筆都是好的伙伴。

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

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

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

6、如果實在想不到思路,就放棄。

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

ii. 不要因為一道題的時間丟了后面題目的分數。

iii. 看題要靈活,不要絆死在一道題,不要怕。NOIP的題不想就做出來,怎么可能,肯定是需要想的。但是最好先寫好寫的題,不一定是前兩道題。其實很多時候你是有能力做起的,只是你一看就怕了,也沒有去認真想,隨便敷衍想了一點特殊情況的算法,認為可以騙到分。但經驗證明最后基本是沒有分,即使有,最多不過10。時間是3個小時,要積極一點,經驗證明,很多題想到一定時候便想出來了。并且很簡單。

7、心態

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

D寫完階段

1、程序按照思路編完之后,查編譯錯誤。經驗證明,剛剛完成的程序不出編譯錯誤的幾率基本為0。

2、編譯全部修正后,千萬不要測樣例。一定是必要的調試手段。經驗證明,第一次就把樣例過了的幾率很低,即使過了,在測自己的特殊數據的時候也會出錯。所以,編譯完后一定要靜態查錯。經驗表明,靜態查錯是很有效果的?;旧厦看戊o態查錯都可以找到變量代錯的錯誤。特別是快排的I,J是否帶錯,DEC,INC是否搞錯,SWAP是不是加了VAR等等。

試想:

i如果沒有靜態查錯,就去測樣例,如果程序有錯,樣例不過,影響心情;

ii即使樣例過了,因為程序有錯,特殊數據也不一定能過;即使特殊數據也過了,程序有錯,評測的時候絕對會錯。

iii那還不如一開始就靜態查,即使發現錯誤,獲得成就感,心情很好。

iv千萬不要慌著去測。要保證程序無錯,思路清晰,結構清晰了,然后再去測樣例,再去測特殊數據。

樣例過了不要得意,特殊數據過了不要得意,很有可能還有很多特殊情況你沒有想到。

3、如果程序錯了需要調試,一定要分模塊調試,不要從頭跟到尾。【具體轉調試技巧】

4、有多余時間一定要進行對拍,即3個程序:生成數據、樸素算法、準備交的算法

5、交之前5-15分鐘千萬不要再改動代碼,主要留意代碼中是否還有測試程序時留下的痕跡。

i. 即使你懷疑它對你的一個輸入給出了錯誤答案,因為你自己算出的結果也有可能是錯的

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

E結束階段

1、走出考場后,除非已經是Day2,永遠別對答案 (個人建議)

2、做好心理準備,也許做了兩道自己認為會全對的,還做了一道自己認為能過幾組的??赡苤坏?0。這也是有過的事情。除了做好那幾個步驟,沒有其他的辦法。認了吧。搬塊石頭砸天,也是沒有用的。

3、樹立正確的成敗觀。體驗第一,拿獎第二。往往能從失敗中學到更多的東西,得到更多的感悟。成功固然好,失敗也不錯。成事在天。做到了自己做到的,就是另一種意義上的成功。

收藏 推薦 打印 | 錄入:admin | 閱讀:
相關新聞      
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數
點評:
       
評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
熱門評論