一般要做到50行以內的程序不用調試、100行以內的二分鍾內調試成功.acm主要是考算法的,主要時間是花在思考算法上,不是花在寫程序與debug上。
下面給個計划練練:
第一階段:練經典常用算法,下面的每個算法打上十到二十遍,同時自己精簡代碼。因為太常用,所以要練到寫時不用想,10-15分鍾內打完,甚至關掉顯示器都可以把程序打出來.
1.最短路(Floyd、Dijstra,BellmanFord)
2.最小生成樹(先寫個prim,kruscal要用並查集,不好寫)
3.大數(高精度)加減乘除
4.二分查找. (代碼可在五行以內)
5.叉乘、判線段相交、然后寫個凸包.
6.BFS、DFS,同時熟練hash表(要熟,要靈活,代碼要簡)
7.數學上的有:輾轉相除(兩行內),線段交點、多角形面積公式.
8. 調用系統的qsort, 技巧很多,慢慢掌握.
9. 任意進制間的轉換
第二階段:練習復雜一點,但也較常用的算法。
如:
1. 二分圖匹配(匈牙利),最小路徑覆蓋
2. 網絡流,最小費用流。
3. 線段樹.
4. 並查集。
5. 熟悉動態規划的各個典型:LCS、最長遞增子串、三角剖分、記憶化dp
6.博弈類算法。博弈樹,二進制法等。
7.最大團,最大獨立集。
8.判斷點在多邊形內。
9. 差分約束系統.
10. 雙向廣度搜索、A*算法,最小耗散優先.
給學習算法的人一點買書的建議吧。
入門三本:
《數據結構與算法》(傅清祥,王曉東編著,我所見過的最好的算法教材)
程序設計導引及在線實踐 作者: 李文新
ACM程序設計培訓教程 吳昊
基礎提高:
算法設計與分析 這是國內牛人王曉東的大作,非常不錯的算法書
算法設計與試驗題解 王曉東
計算幾何-算法設計與分析 周培德
組合數學 第三版 馮舜璽 譯
算法藝術與信息學競賽 劉汝佳的傑作,引導着信息學競賽的發展
如果算法導論是九陽神功,那這本無疑就是九陰真經。本書是專為參加一些諸如ACM之類程序設計比賽的同學而寫的,江湖人稱“黑書”。里面講的都是一些在編程比賽中常用的算法、數據結構,以及一些數論和計算幾何等。我雖然並不搞競賽,但也從此書中受益頗多。
國際信息學奧林匹克競賽指導— — 實用算法的分析與程序設計 吳文虎 王建德
Introduction to Algorithm 科曼著 傳說中的寶典
Algorithms 算法概論
短小精悍,別據一格,准經典之作。一個壞消息: 同算法導論,該書沒有習題答案。好消息:習題很經典,難度也適中,只需花點點時間自己也都能做出來。另有中文版名《算法概論》,如果有心的話,還是盡量看原版吧,其實看原版與看中文版花費時間不會相差很大,因為大部分時間其實都花費在做習題上了。
Algorithm Design 算法設計
《程序設計中的組合數學》 吳文虎
《ACM國際大學生程序設計競賽試題與解析》全部冊(吳文虎著,清華大學出版社)