|
|
最近看到一篇文章挺不錯,針對ACM一些新手或迷茫在其中的人有莫大的幫助(個人覺得),所以轉(zhuǎn)載過來與大家一起分享,也希望越來越多喜歡編程的同學(xué)能明確自己的方向和目標(biāo):
磨刀不誤砍柴功,做好平時的基本功,用到時自然就事半功倍
針對于平時的練習(xí):
=========================================================================================
第一階段:
練經(jīng)典常用算法,同時自己精簡代碼,因為太常用,所以要練到寫時不用想,10-15分鐘內(nèi)打完,甚至關(guān)掉顯示器都可以把程序打出來.
1. 最短路(Floyd、Dijstra,BellmanFord).
2. 最小生成樹(先寫個prim,kruscal要用并查集,不好寫).
3. 大數(shù)(高精度)加減乘除.
4. 二分查找. (代碼可在五行以內(nèi)).
5. 叉乘、判線段相交、然后寫個凸包.
6. BFS、DFS,同時熟練hash表(要熟,要靈活,代碼要簡).
7. 數(shù)學(xué)上的有:輾轉(zhuǎn)相除(兩行內(nèi)),線段交點、多角形面積公式.
8. 調(diào)用系統(tǒng)的qsort, 技巧很多,慢慢掌握.
9. 任意進制間的轉(zhuǎn)換.
第二階段:
練習(xí)復(fù)雜一點,但也較常用的算法。
如:
1. 二分圖匹配(匈牙利),最小路徑覆蓋.
2. 網(wǎng)絡(luò)流,最小費用流.
3. 線段樹.
4. 并查集.
5. 熟悉動態(tài)規(guī)劃的各個典型:LCS、最長遞增子串、三角剖分、記憶化DP.
6. 博弈類算法。博弈樹,二進制法等.
7. 最大團,最大獨立集.
8. 判斷點在多邊形內(nèi).
9. 差分約束系統(tǒng).
10. 雙向廣度搜索、A*算法,最小耗散優(yōu)先.
第三階段:
前兩個階段是打基礎(chǔ),第三階段是鍛煉在比賽中可以快速建立模型、想新算法,這就要平時多做做綜合的題型了.
1. 把OIBH上的論文看看.
2. 平時掃掃ZOJ上的難題啦,別老做那些不用想的題.
3. 多參加網(wǎng)上的比賽,感受一下比賽的氣氛,評估自己的實力.
4. 一道題不要過了就算,問一下人,有更好的算法也打一下.
5. 做過的題要記好.
=========================================================================================
沒有什么捷徑,只要平時能打下扎實的基礎(chǔ),功到自然成~.~ 不知不覺你懂得的、會的、熟練的、掌握的也就多了 |
|