最近調資料結構自閉了,準備總結一些不常見但很有用的操作。
- 將資料結構封存在結構體內。
這樣可以讓程式碼結構清晰一些,更好查錯。
- 使用 devc++ 切換編譯器。
只用開啟‘工具’,‘編譯選項’,輸入 -std=c++11 就行了。
- 常用的程式碼可以用 define 宏定義。
同樣是簡化程式碼。如線段樹可以這樣:
#define lc(x) x<<1
#define rc(x) x<<1|1
-
極域殺手下載後需要給 .exe 檔案重新命名才能用。
-
樹的最小支配集 $=$ 全集 $-$ 最大獨立集。
-
如果函式型別不是 void ,必須有返回,否則會 RE。
-
WA 和 MLE 都有可能是陣列開太小造成的。
-
隨機函式不要用 $rand()$ ,要用這個:
mt19937_64 rng(time(NULL));
-
暴力程式碼可以分資料範圍處理,有時可以“不可以總司令”
-
暴力演算法可以利用 clock() 來卡時。
-
造資料 樹 的資料時,要造菊花圖,鏈,二叉樹的情況。
-
有時 $sort$ 會被卡,可以用 stable_sort。
-
c++98 比 c++11快。
-
函式使用類似
f(const int a)
會更快。 -
莫隊塊長實際應為 $n/ \sqrt m$ 。
-
二位偏序時排序要判兩個關鍵字
-
矩陣快速冪注意列舉順序,按 i,k,j 來列舉
-
dinic 有時用 vector 更快,因為記憶體是連續的。
-
矩陣快速冪最佳化 dp 時,如果是多測,可以預處理出轉移矩陣的 $2^i$ 次方。
-
$\gcd(0,n)=n$ 。