算法学习三阶段
第一階段:練經典經常使用算法,以下的每一個算法給我打上十到二十遍,同一時候自己精簡代碼,? 由于太經常使用,所以要練到寫時不用想,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. 做過的題要記好 :-)??
轉載于:https://www.cnblogs.com/mfrbuaa/p/3767744.html
總結
- 上一篇: tablefunc 行转列
- 下一篇: Maven入门指南② :Maven 常用