一位高手對(duì)我的建議:
一般要做到50行以內(nèi)的程序不用調(diào)試、100行以內(nèi)的二分鐘內(nèi)調(diào)試成功.acm主要是考算法的
,主要時(shí)間是花在思考算法上,不是花在寫(xiě)程序與debug上。
下面給個(gè)計(jì)劃你練練:
第一階段:
練經(jīng)典常用算法,下面的每個(gè)算法給我打上十到二十遍,同時(shí)自己精簡(jiǎn)代碼,
因?yàn)樘S茫砸毜綄?xiě)時(shí)不用想,10-15分鐘內(nèi)打完,甚至關(guān)掉顯示器都可以把程序打
出來(lái).
1.最短路(Floyd、Dijstra,BellmanFord)
2.最小生成樹(shù)(先寫(xiě)個(gè)prim,kruscal要用并查集,不好寫(xiě))
3.大數(shù)(高精度)加減乘除
4.二分查找. (代碼可在五行以內(nèi))
5.叉乘、判線段相交、然后寫(xiě)個(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),但也較常用的算法。
如:
1. 二分圖匹配(匈牙利),最小路徑覆蓋
2. 網(wǎng)絡(luò)流,最小費(fèi)用流。
3. 線段樹(shù).
4. 并查集。
5. 熟悉動(dòng)態(tài)規(guī)劃的各個(gè)典型:LCS、最長(zhǎng)遞增子串、三角剖分、記憶化dp
6.博弈類算法。博弈樹(shù),二進(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的版主經(jīng)常說(shuō)我挑簡(jiǎn)單的來(lái)
做:-P )
3. 多參加網(wǎng)上的比賽,感受一下比賽的氣氛,評(píng)估自己的實(shí)力.
4. 一道題不要過(guò)了就算,問(wèn)一下人,有更好的算法也打一下。
5. 做過(guò)的題要記好 :-)
posted on 2007-06-13 00:47
星夢(mèng)情緣 閱讀(1072)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
關(guān)于編程