CSP/NOIP 防爆指南
阿新 • • 發佈:2021-10-17
CSP/NOIP 防爆指南
一、檔案操作
-
使用
freopen
進行檔案讀寫。使用格式:freopen("test.in","r",stdin); freopen("test.out","w",stdout);
注意該語句存在於標頭檔案
cstdio
中,一定寫對檔名。 -
注意加足加夠標頭檔案。(dev 比較欠,可能會自動加標頭檔案。)
-
允許使用 C++14 和以下劃線開頭的函式(意味著
__int128
,__builtin_popcount()
,__builtin_ctz()
, 都合法了)。 -
聽從監考老師要求,根據老師的要求存放檔案。(一般是在 D 盤根目錄下,以
SD-00000XXX
-
使用萬能頭時注意變數重名,如 y1 。
二、常見問題
- 計算資料大小,是否爆 int ,注意
%d
與 int 對應,%lld
與 long long 對應,改 float 為 double ,%lf
與 double 對應。可以引用limits.h
標頭檔案,輸出INT_MAX
和LONG_LONG_MAX
來檢視 int 和 long long 的最大值。int 大約為 2e5 , long long 大約為 5e18 。 - 注意定義資料的型別。(小心 double 定義成 int , int 定義成 char 等問題。)
- 注意 MLE / RE ,一個 int 為 4B , 一個 long long 為 8B , bool 與 char 為 1B ,不要開小導致 RE 或 開大 導致 MLE。常見的 RE 錯誤還有除以 0 ,函式遞迴死迴圈。
i++
與i--
是先呼叫後加減,++i
和--i
反之。注意 <= 與 < , >= 與 > 。- 位運算優先順序問題。
- 全域性變數和區域性變數衝突問題。
- 涉及取模的問題,能多模不少模,需要卡常時可以採取減法。涉及乘法建議強制轉 long long 或 乘
1ll
。 - 二分和遞迴邊界。
- 各種模板背熟、儘量理解原理(為了魔改)。
三、比賽策略
- 本條目針對 CSP/NOIP 常見題型。
- 大模擬:權衡時間,取價效比高的部分分。
- 數學、規律題:證明 or 猜測。(如小凱的疑惑。)
- DP、圖論:重中之重,屬於主要做的題目。
- 永遠記住暴力和騙分。
- 在空餘的時間對拍、自造大樣例確保程式正確性。
- 最後 30min 檢查程式是否正確提交。
四、考試狀態
- CSP-S2 是下午比賽,因此中午不能吃太飽、建議小睡一會。
- 考試時允許帶食品,建議巧克力。
- “廁所是 OIer 靈感的源泉。”洗手間可以讓人冷靜下來。
- 一定合理安排時間,不能炸心態,不能死磕一題。
以上根據作者諸多爆炸經歷總結得出。
\[By \text{ } ahawzlc \text{ } 2021.10.17 \] 任何一個偉大的計劃,都有一個微不足道的開始