入門級
2.1.3 資料結構
其中有個 huffman 樹,定義是:求最小權的樹,權定義為所有點權值乘深度的和。
荷馬史詩裡面要求兒子不超過 \(k\),需要補 0 過後用堆貪心,每次選小的早一步合成作為更深點。
還有個鄰接矩陣,注意這玩意自乘 \(k\) 次方就是圖上恰好走 \(k\) 的到達情況。
還有棧、佇列什麼的,注意 csps2020 迴文一題中先討論第一步然後轉化成雙棧問題。
2.1.4 演算法
4. 數值處理演算法 高精度
某人:ccf 考高精度我吃*。
一般來講 __int128
就夠了。
除法現在不會了。https://www.becoder.com.cn/submission/2651609 。
現在終於會了!考慮大除法,當前要計算的就是 r 和 b 的除,而 r 就是原數到這一位的取模。
5. 排序演算法
注意氣泡排序考點較多,參考 noi online s 那一道以及模擬賽 T2,都是逆序對的轉化以及考慮一個元素前面有多少個比他的大,記為 \(f_i\)。(一輪排序後 \(f_i\) 如果非 0 則改變 1)
還有什麼計數排序,基本上沒用。注意下面程式碼最後一行倒敘遍歷是考慮情況:值相同但要保留輸入順序。
void counting_sort() {
for (int i = 1; i <= n; ++i) ++cnt[a[i]];
for (int i = 1; i <= w; ++i) cnt[i] += cnt[i - 1];
for (int i = n; i >= 1; --i) b[cnt[a[i]]--] = a[i];
}