前一年,當我還是競程選手的時候,就想挑戰鐵人賽紀錄學到的東西,礙於時間問題而未成。現在,雖然已證明這是條錯誤的路,能力也不復以往,但還是必須達成當時的願望,也算...
Introduction 枚舉是算法的基礎,以最原始的方式,看過所有可能答案。舉個例子,假設現在要將一些數字由小到大排序,最原始的方法就是枚舉所有排列,長度 n...
DFS 在此抄襲借用 Competitive Programming Handbook 的例子。書中第 62 頁畫了 7x7 格子,求左上走過所有格子到右下的路...
枚舉演算法 雖然對競程來說觀察性質非常重要,有時不管怎麼觀察也想不出解法,這時就需要「枚舉演算法」了。枚舉演算法就是把你想得到的算法都列舉出來,就算題目看起來很...
Introduction 假設你在中友百貨 15 樓 A 棟,你想去 1 樓搭公車,好巧不巧,電梯壞了,你會怎麼做?一般人都是搭手扶梯吧。 但在這有兩個前提,首...
最近回顧貪心才發現,我不是很熟悉這個領域,主要是靠長時間做題經驗培養直覺。遇到貪心...假設它是貪心題時,首先你要假設遵循一個相對單調的程序就能得到答案,像前一...
《思辨賽局》其中一章講到拍賣,它的核心概念「像得標那樣出價」和貪心有點像。什麼意思呢?假設你出了價沒得標,結果是不賺不賠。因此只需考慮得標的狀況,避免得標時賠錢...
Introduction 對於學過 DP 的人來說,這題應該是不陌生吧。許多教科書都會告訴你 DP 需要滿足重疊子問題和最佳子結構,但現在,我們現把它放一邊。...
背包問題 USACO有較全面的教學。 背包問題的核心就是選東西,根據選法判斷某個組合是否出現,或最大化這樣選的收益/代價。通常背包問題的狀態數不會超過兩個,一邊...
原本要講區間 DP,結果發現忘了先講前綴和,在此補上。 前綴和最原始的題目是這樣的:給你長度 n 數列和 q 個 l, r,回答這些 a[l]+...+a[r]...