哪裡能找到一些簡單的演算法競賽題?
我來試著回答一下這個問題。
Hash Table Problem - 5183
ST Table Problem - 3183樹狀數組單點修改區間查詢 Problem - 1754樹狀數組區間修改單點查詢 Problem - 1608樹狀數組區間修改區間查詢 Problem - 3468
線段樹單點修改區間查詢 Problem - 1754線段樹區間修改單點查詢 Problem - 1608線段樹區間修改區間查詢 Problem - 3468線段樹合併 Problem - 3667線段樹掃描線 Problem - 1542線段樹區間GCD維護 Problem - 5726李超線段樹 Problem - 1568主席樹 Problem - 4729Splay Problem - 3487Treap Problem - 4585
替罪羊樹 Problem - 3065樹鏈剖分 Problem - 3804Link/Cut Tree Problem - 5398K-D Tree Problem - 4400塊狀鏈表 Problem - 4366莫隊演算法 Problem - 5381樹上莫隊演算法 Problem - COT2左偏樹 Problem - 3031堆 Problem - 3673並查集 Problem - 1272
帶權並查集 Problem - 3047鏈表 Problem - 1413雙向鏈表 Problem - 4699雙端隊列 Problem - 5929棧 Problem - 1022單調棧 Problem - 1506最小生成樹 Problem - 2682
次小生成樹 Problem - 4756最優比率生成樹 Problem - 2728曼哈頓最小生成樹 Problem - 3241
斯坦納樹 Problem - 3311完美消除序列 Problem - 1006Huffman編碼 Problem - 2527最小樹形圖 Problem - 2121樹的重心 Problem - 4118最近公共祖先 Problem - 2586生成樹計數 Problem - 4305二叉樹遍歷 Problem - 1710割點 Problem - 4587割邊 Problem - 4738
邊雙連通分量 Problem - 4612點雙連通分量 Problem - 3394強連通分量 Problem - 4635Dominator Tree Problem - 4694最大流 Problem - 3549最小割 Problem - 3917最小費用最大流 Problem - 1533線性規劃 Problem - 5699二分圖判定 Problem - 4751二分圖最大匹配 Problem - 5093
最大獨立集 Problem - 1068最大點權獨立集 Problem - 15652-SAT Problem - 4421單源最短路 Problem - 3795全源最短路 Problem - 3631次短路 Problem - 1688第K短路 Problem - 2449差分約束 Problem - 4598拓撲排序 Problem - 2647歐拉迴路 Problem - 2894
最大團 Problem - 1530穩定婚姻匹配 Problem - 1914Dancing Links Problem - 3111插頭動態規劃 Problem - 1693
區間動態規劃 Problem - 5900環形動態規劃 Problem - 3506樹形動態規劃 Problem - 2196概率動態規劃 Problem - 4336狀態壓縮動態規劃 Problem - 3920整數劃分動態規劃 Problem - 5230
單調隊列優化動態規劃 Problem - 3401斜率優化動態規劃 Problem - 2829四邊形不等式優化動態規劃 Problem - 351601背包 Problem - 1171完全背包 Problem - 4508多重背包 Problem - 2844混合背包 Problem - 5410二維費用背包 Problem - 3496分組背包 Problem - 1712依賴背包 Problem - 1561
KMP Problem - 4763
Extended KMP Problem - 4333Manacher Problem - 3613Trie Problem - 1671Aho-Corasick Automaton Problem - 2296後綴數組 Problem - 1403後綴自動機 Problem - 4416後綴樹 Problem - 3518巴什博弈 Problem - 2147
Nim遊戲 Problem - 2509威佐夫博弈 Problem - 1527樹上刪邊遊戲 Problem - 5299Sprague-Grundy Function Problem - 4155Pick定理 Problem - 3775
半平面交 Problem - 3761旋轉卡殼 Problem - 3934凸包 Problem - 1348三維點積 Problem - 3692三維叉積 Problem - 1174三維凸包 Problem - 4266仿射變換 Problem - 4087歐拉篩法 Problem - 2161
歐拉函數 Problem - 4483莫比烏斯反演 Problem - 4746Miller-Rabin素數測試 Problem - 2138Prime-counting Function Problem - 5901Pollard"s rho整數分解 Problem - 3864最大公約數 Problem - 1019最小公倍數 Problem - 1108擴展歐幾里得 Problem - 2669乘法逆元 Problem - 1576線性逆元 Problem - 5673高斯消元 Problem - 3364模線性方程組 Problem - 1573異或線性基 Problem - 3949行列式 Problem - 4305容斥原理 Problem - 4135置換群 Problem - 5495Lucas定理 Problem - 3944組合數取模 Problem - 3944BSGS Problem - 2417Extended BSGS Problem - 2815快速沃爾什變換 Problem - 5909快速傅里葉變換 Problem - 5307自適應辛普森積分法 Problem - 1724Bell數 Problem - 2512Catalan數 Problem - 1134逆序對 Problem - 4911九餘數定理 Problem - 1163抽屜原理 Problem - 5776康托展開 Problem - 1430蔡勒公式 Problem - 2005錯排公式 Problem - 1465進位轉換 Problem - 2031高精度 Problem - 1042快速冪 Problem - 1061矩陣快速冪 Problem - 2604母函數 Problem - 2110深度優先搜索 Problem - 1518
記憶化搜索 Problem - 5001廣度優先搜索 Problem - 1026雙向廣度優先搜索 Problem - 3085A* Problem - 1043IDA* Problem - 1667對抗搜索 Problem - 4597最長不下降子序列 Problem - 1950
最長公共子序列 Problem - 1159最長公共前綴 Problem - 4691最大子矩陣 Problem - 4328平面最近點對 Problem - 1007平面最近圓對 Problem - 3124貪心法 Problem - 1789
雙指針 Problem - 5672二分法 Problem - 2199三分法 Problem - 2298二分答案 Problem - 4190二分查找 Problem - 2141CDQ分治 Problem - 4742模擬退火 Problem - 2297
歡迎補充
不敢說在95%的題目中出現過,但是5%應該是有的吧(逃
這是人人追尋的東西,據我所知,還不存在演算法競賽練習的話入門可以試試USACO的training。
有一些基礎/自學能力強也可以直接上手劉汝佳大神的「演算法競賽入門經典」,看完第十一章之後用「演算法競賽訓練指南」跟進。配合UVa和Live Archive的題目,也是一條不好走但是直通山頂的「捷徑」。每每看著汝佳大神三四十行就簡潔明了地實現了我需要上百行的代碼,都可以從中收穫很多。
不問why直接問how的都是耍流氓...演算法競賽需要「庫」么?
庫/模版確實很重要,但也不是所有題都可以用上庫/模版。比如動態規劃或者貪心演算法,與其說是教你如何計算的演算法,不如說是引導思維的思考方法。題型的不同變化,都需要編碼者一步步推導分析,想了一個大圈,最後可能只是寥寥幾行。而過程中的這份腦力的付出,並不是「庫函數」可以代替的。
當然,有些章節,比如數據結構(可以參考「訓練指南」一書的數據結構章)確實更「套路」些,倒是可以多準備些模版。不過缺乏訓練,做的題少,可能並不能領會到每個結構的妙處。比如為何自己優化了很久的「線段樹」並不是vjudge上最快的呢?可能別人理解了「樹狀數組」的區間更新,四十行就做了自己一百多行的工作,還跑得更快!即便是數據結構這樣滿是套路的章節,理解也是可以比套路更重要的。真的都學明白了的話,要庫函數又可以做什麼呢?
最後,無論庫/模版編寫的多麼精細,「庫」都很慢很不方便的,不如現場按需求寫的定製化程度高。我記得樓教主寫的回憶錄里也提到過他們最後決賽的時候,提前可以碰機器也沒有人打模版的。演算法都融匯在了心中,要模版可以...敲錯然後debug?
如果是面向就業的話,你可以參考這個List http://hihocoder.com/discuss/question/2822;如果是面向競賽的話,網上的確有更多的List,你可以考慮把它們綜合一下。最終還是決定先從AOJ的Introduction (Programming Challenge)開始。廢話少,最重要的是不需要先理解題意,直接給你名字了。雖然不多,但是先把這裡都實現完再找別的吧。
lintcode,在公司不能上LeetCode就刷一下這個
拿出演算法導論 把上面的代碼都實現一遍
《演算法競賽入門經典》
演算法競賽入門經典 劉汝佳
隨便找個oj把題目按ac率由高到低排序然後開始刷題
簡單的演算法競賽題,某種意義上是矛盾的。
你值得擁有
LintCode LeetCode都可以 想有趣一點的上ProjectEuler寫競賽模板?搜一下poj訓練計劃,這個涵蓋面還是很廣的。
如果寫著玩,就演算法導論吧。
codeforces educational round..?..
codewar,每個題都有難度等級和標籤,還可以加入部落打怪升級。
推薦閱讀:
※擔任ACM/OI競賽教練是怎樣一種體驗?
※為什麼清華的交叉信息研究院或計算機系的本科生就能夠在理論計算機學科上發一大堆的論文?
※女生面試 Google 會不會容易些?
※如何評價中山大學vmatrix評測系統?
※參加第五屆"圖靈杯"NEUQ-ACM程序設計競賽(個人賽)是什麼體驗?
TAG:ACM競賽 |