算法学习三阶段
第一階段:練經(jīng)典經(jīng)常使用算法,以下的每一個(gè)算法給我打上十到二十遍,同一時(shí)候自己精簡(jiǎn)代碼,? 由于太經(jīng)常使用,所以要練到寫時(shí)不用想,10-15 分鐘內(nèi)打完,甚至關(guān)掉顯示器都能夠把程序打? 出來.?
1.最短路(Floyd、Dijstra,BellmanFord)?
2.最小生成樹(先寫個(gè) prim,kruscal 要用并查集,不好寫)
3.大數(shù)(高精度)加減乘除?
4.二分查找. (代碼可在五行以內(nèi))?
5.叉乘、判線段相交、然后寫個(gè)凸包.?
6.BFS、DFS,同一時(shí)候熟練 hash 表(要熟,要靈活,代碼要簡(jiǎn))?
7.數(shù)學(xué)上的有:輾轉(zhuǎn)相除(兩行內(nèi)),線段交點(diǎn)、多角形面積公式.?
8. 調(diào)用系統(tǒng)的 qsort, 技巧非常多,慢慢掌握.?
9. 隨意進(jìn)制間的轉(zhuǎn)換???
?
?
第二階段:練習(xí)復(fù)雜一點(diǎn),但也較經(jīng)常使用的算法。? 如:?
1. 二分圖匹配(匈牙利),最小路徑覆蓋?
2. 網(wǎng)絡(luò)流,最小費(fèi)用流。?
3. 線段樹.?
4. 并查集。?
5. 熟悉動(dòng)態(tài)規(guī)劃的各個(gè)典型:LCS、最長(zhǎng)遞增子串、三角剖分、記憶化 dp?
6.博弈類算法。博弈樹,二進(jìn)制法等。?
7.最大團(tuán),最大獨(dú)立集。?
8.推斷點(diǎn)在多邊形內(nèi)。?
9. 差分約束系統(tǒng).?
10. 雙向廣度搜索、A*算法,最小耗散優(yōu)先.?
?
?
?
第三階段:前兩個(gè)階段是打基礎(chǔ),第三階段是鍛煉在比賽中能夠高速建立模型、想新算法。這就要平時(shí)多做做綜合的題型了。?
1. 把 oibh 上的論文看看(大概幾百篇的,我僅僅看了一點(diǎn)點(diǎn),呵呵)。?
2. 平時(shí)掃掃 zoj 上的難題啦,別老做那些不用想的題.(中大 acm 的版主常常說我挑簡(jiǎn)單的來 做:-P )?
3. 多參加網(wǎng)上的比賽,感受一下比賽的氣氛,評(píng)估自己的實(shí)力.?
4. 一道題不要過了就算,問一下人,有更好的算法也打一下。?
5. 做過的題要記好 :-)??
轉(zhuǎn)載于:https://www.cnblogs.com/mfrbuaa/p/3767744.html
總結(jié)
- 上一篇: tablefunc 行转列
- 下一篇: 基于C#在WinCE6.0系统SQLCE