ACM大量習題題庫
現在網上有許多題庫,大多是可以線上評測,所以叫做Online Judge。除了USACO是為IOI準備外,其餘幾乎全部是大學的ACM競賽題庫。
USACO
http://ace.delos.com/usacogate
美國著名線上題庫,專門為資訊學競賽選手準備
TJU
http://acm.tongji.edu.cn/
同濟大學線上題庫,唯一的中文題庫,適合NOIP選手
ZJU
http://acm.zju.edu.cn/
浙江大學線上題庫
JLU
http://acm.jlu.edu.cn/
吉林大學線上題庫(一直上不去)
PKU
http://acm.pku.edu.cn
北京大學線上題庫
URAL
http://acm.timus.ru
俄羅斯烏拉爾大學線上題庫
SGU
http://acm.sgu.ru/
俄羅斯聖薩拉托夫州大學線上題庫
ELJ
http://acm.mipt.ru/judge/bin/problems.pl?lang=en
俄羅斯莫斯科物理技術學院
SPOJ
https://spoj.sphere.pl/
波蘭格但斯克理工大學
UVA
http://acm.uva.es/
西班牙的Universidad de Valladolid線上題
ACM聯絡建議
一位高手對我的建議:
一般要做到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. 做過的題要記好 :-)