信息學奧賽的關鍵時刻就要到了千萬不要因為不熟悉考試注意事項而耽誤考試、影響成績哦~今天為大家?guī)硪恍┛荚囎⒁馐马?,大家一定要提前了解一下,以免錯過重要信息。
1. 文件輸入輸出
這部分是參數(shù)選手們出錯最多的地方!因為和平時練習不一樣。CSP復賽要求用文件輸入輸出,一定要確保提交文件中freopen()文件讀寫沒有被注釋掉,再具體點,就是一定要記住兩句話:
freopen(“xxxx.in”,“r”,stdin);
freopen(“xxxx.out”,“w”,stdout);
注:xxxx是每道題的英文名字。
2. 注意“四名”
文件夾名、程序文件名、輸入文件名、輸出文件名。
每道題這部分的英文名稱都是一樣的,都是小寫,一定要多檢查幾遍!
3. 輸出格式和大小寫問題
比如,注意題目要求每個輸出結果在同一行,還是在不同行。
或者輸出yes no right impossible等英文提示時,是否要求首字母大寫,大小寫在Linux下面是不一樣的。
4. 注意存盤,不要關機
為了防止突發(fā)事件,至少20分鐘存盤一次 。千萬不要關機,否則程序會丟失。
5. 頭文件
頭文件太多時,容易忘寫using namespace std;但是用了using namespace std;之后容易產(chǎn)生的問題是:自己的變量名和std命名空間的變量名沖突,而且在Windows下編譯器不報錯,在Linux下報錯。所以自己的變量名不要使用hash、x0、x1、y0、y1,time、next、pipe等。如果需要這幾個單詞,可以用Time、Next等第一個字母大寫或者加上一些字母,如mytime、mynext等,或者定義成局部變量。當然,time、next、pipe等作為結構體的成員名是沒問題的。
6. 變量初始化
變量在使用之前忘了初始化,里面的值是隨機的,結果就會出問題,所以使用的時候不要忘記初始化,可以定義成全局變量,系統(tǒng)會自動初始化。
7. 數(shù)據(jù)類型
注意數(shù)據(jù)類型,輸入輸出的時候占位符和數(shù)據(jù)類型要一致,不一致在有時候可能結果也沒有錯誤,但是評測的時候可能就有問題,比如long long的數(shù)據(jù)類型不能用“%d”,而應該用“%lld”。
8. 不要使用gets函數(shù)
由于gets函數(shù)會造成安全隱患,在C++中已經(jīng)被棄用,所以注意不要使用gets函數(shù)??梢允褂茫篺gets\getchar\scanf\std::cin或其他讀入方式。
9. 數(shù)組
C++里數(shù)組有時候可能會出現(xiàn)莫名其妙的問題,所以一定要記得把數(shù)組開大點,并且賦初值。最好是開成全局變量,因為在main函數(shù)里定義的是局部變量,給你的空間會比較小,二維數(shù)組很容易就爆了。
一些建議
10. STL
STL主要是依靠各種容器和函數(shù)來實現(xiàn)各種功能,但是STL有些不是很常用,比如隊列和棧,手寫很方便,而且快一些,主要就用堆(priority_queue)、字符串(string)和動態(tài)數(shù)組(vector)。
11. 指針
指針一般競賽選手用得比較少,因為太容易出錯了,一般選手會開個數(shù)組用下標i做指針,比較方便。
12. 時間空間資源和精度
1000毫秒內(nèi)最大循環(huán)次數(shù)不要超過10^8(10^8有點懸,10^7絕對不超時)??臻g限制在128MB時,數(shù)組元素類型為int時,元素個數(shù)最多千萬級別(約3*10^7),要定義在到main函數(shù)外面的全局變量區(qū)(二維數(shù)組的兩個維度大小要相乘)。
13. 數(shù)據(jù)范圍
有的題目,多個數(shù)相加,每個數(shù)的最大值就到了1e9,那么存放和的變量就必須是long long 。有的題目,邊權的最大值都到了1e9,并且更新最短路徑時兩個邊權相加,結果就是2e9,那么我們在為數(shù)組元素賦值為無窮大時,應該設多少呢?我們的無窮大可以是1e9+1,或者0x3f3f3f3f=十進制1061109567, 0x7f7f7f7f=十進制2139062143,int 的范圍是-2147483648 ~ 2147483647。所以程序中的無窮大可以定義為1e9+1或0x3f3f3f3f 。
以上就是昆明童程童美少兒編程培訓為您提供信息學奧賽CSP考試中應該注意事項和建議的全部內(nèi)容,更多內(nèi)容請進入學習資料 查看