1. 程式人生 > 其它 >CSP/NOIP 防爆指南

CSP/NOIP 防爆指南

CSP/NOIP 防爆指南

一、檔案操作

  1. 使用 freopen 進行檔案讀寫。使用格式:

    freopen("test.in","r",stdin);
    freopen("test.out","w",stdout);
    

    注意該語句存在於標頭檔案 cstdio 中,一定寫對檔名。

  2. 注意加足加夠標頭檔案。(dev 比較欠,可能會自動加標頭檔案。)

  3. 允許使用 C++14 和以下劃線開頭的函式(意味著 __int128__builtin_popcount()__builtin_ctz() , 都合法了)。

  4. 聽從監考老師要求,根據老師的要求存放檔案。(一般是在 D 盤根目錄下,以 SD-00000XXX

    為名字建立一個資料夾,資料夾下分四道題目的資料夾,這四個資料夾內各自存放一個源程式。)

  5. 使用萬能頭時注意變數重名,如 y1 。

二、常見問題

  1. 計算資料大小,是否爆 int ,注意 %d 與 int 對應, %lld 與 long long 對應,改 float 為 double ,%lf 與 double 對應。可以引用 limits.h 標頭檔案,輸出 INT_MAXLONG_LONG_MAX 來檢視 int 和 long long 的最大值。int 大約為 2e5 , long long 大約為 5e18 。
  2. 注意定義資料的型別。(小心 double 定義成 int , int 定義成 char 等問題。)
  3. 注意 MLE / RE ,一個 int 為 4B , 一個 long long 為 8B , bool 與 char 為 1B ,不要開小導致 RE 或 開大 導致 MLE。常見的 RE 錯誤還有除以 0 ,函式遞迴死迴圈。
  4. i++i-- 是先呼叫後加減,++i--i 反之。注意 <= 與 < , >= 與 > 。
  5. 位運算優先順序問題。
  6. 全域性變數和區域性變數衝突問題。
  7. 涉及取模的問題,能多模不少模,需要卡常時可以採取減法。涉及乘法建議強制轉 long long 或 乘 1ll
  8. 二分和遞迴邊界。
  9. 各種模板背熟、儘量理解原理(為了魔改)。

三、比賽策略

  1. 本條目針對 CSP/NOIP 常見題型。
  2. 大模擬:權衡時間,取價效比高的部分分。
  3. 數學、規律題:證明 or 猜測。(如小凱的疑惑。)
  4. DP、圖論:重中之重,屬於主要做的題目。
  5. 永遠記住暴力和騙分。
  6. 在空餘的時間對拍、自造大樣例確保程式正確性。
  7. 最後 30min 檢查程式是否正確提交。

四、考試狀態

  1. CSP-S2 是下午比賽,因此中午不能吃太飽、建議小睡一會。
  2. 考試時允許帶食品,建議巧克力。
  3. “廁所是 OIer 靈感的源泉。”洗手間可以讓人冷靜下來。
  4. 一定合理安排時間,不能炸心態,不能死磕一題。

以上根據作者諸多爆炸經歷總結得出。

\[By \text{ } ahawzlc \text{ } 2021.10.17 \] 任何一個偉大的計劃,都有一個微不足道的開始