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 \]