NOIP比賽寫代碼注意事項


1.頭文件:
   常用頭文件:
      <iostream>
      <cstdio>
      <cmath>
      <cstring>
      <cstdlib>
      cstdio包含scanf和printf,有的編譯器iostream都包含了,都寫上比較好一般寫代碼時先都把這幾個寫上去。
  較常用頭文件:
       <algorithm>
       <vector>
       <queue>
       <string>
  頭文件太多時,容易忘寫using namespace std;我經常忘了輸這一行。

但是用了using namespace std;之后容易產生的問題是:自己的變量名和std命名空間的變量名沖突,而且在windows下,編譯器不報錯。在linux下報錯。所以自己的變量名不要使用time,next,pipe。如果需要這幾個單詞,可以用Time, Next。當然,time,next,pipe作為結構體的成員名是沒問題的。


2.STL:
    STL主要是依靠各種容器和函數來實現各種功能,但是STL有些比較雞肋,比如隊列和棧,手寫很方便,而且快一些,主要就用堆(priority_queue),字符串(string)和動態數組(vector)。


3.數組:
    C++里數組出問題可能會出現莫名其妙的問題,所以一定要記得把數組開大點,並且賦初值。最好是開成全局變量,因為在main函數里定義的是局部變量,給你的空間會小一些,二維數組隨便一開就爆了。


4.指針:
    指針我除了學的時候幾乎沒用過,一般就開個數組用下標i做指針,比較方便。


5.時間空間資源和精度:
    1000毫秒內最大循環次數不要超過10^8(10^8有點懸,10^7絕對不超時)。空間限制在128MB時,數組元素類型為int時,元素個數最多千萬級別(約3*10^7),要定義在到main函數外面的全局變量區(二維數組的兩個維度大小要相乘)。

6.數據范圍

  有的題目,比如深學游戲一題,多個數相加,每個數的最大值就到了1e9,那么存放和的變量就必須是longlong  

  有的題目,比如求最短路徑的題目,邊權的最大值都到了1e9,並且更新最短路徑時時兩個邊權相加,結果就是2e9,那么我們在為dist數組元素賦值為無窮大時,應該設多少呢?我們的無窮大可以是1e9+1,或者0x3f3f3f3f=十進制1061109567, 0x7f7f7f7f=十進制2139062143,int 的范圍是-2147483648 ~ 2147483647。所以以后我們程序中的無窮大就定義為1e9+1或0x3f3f3f3f

7.千萬注意輸出格式和大小寫問題

    比如注意題目要求每個輸出結果在同一行,還是在不同行;或輸出yes no right impossible等英文提示時要求首字母大寫。比如 洛谷1443 馬的遍歷 輸出要求 左對齊 占位5

8.建立圖的鄰接矩陣和鄰接表時,注意單向邊和雙向邊,重邊,自環等情況。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM