算法學習建議(轉)

算法學習建議(轉)

作者:pysub      來源:zz     發表時間:2009-01-20     瀏覽次數: 15711      字號:    

內容摘要 archive,第三階段,blog,http,html,

http://www.cppblog.com/Leon916/archive/2008/07/06/55480.html

一般要做到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*算法,最小耗散優先.


第三階段:
    前兩個階段是打基礎,第三階段是鍛鍊在比賽中可以快速建立模型、想新算法
。這就要平時多做做綜合的題型了。  
 1. 把oibh上的論文看看(大概幾百篇的,我只看了一點點,呵呵)。  
 2. 平時掃掃zoj上的難題啦,別老做那些不用想的題.(中大acm的版主經常說我挑簡單的來
做:-P )  
 3. 多參加網上的比賽,感受一下比賽的氣氛,評估自己的實力.  
 4. 一道題不要過了就算,問一下人,有更好的算法也打一下。  
 5. 做過的題要記好 :-)   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章