Red Huang

Red Huang

ACM ICPC 育成プログラム

ACM 大量習題題庫

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. 做過的題要記好 :-)
ACM ICPC 學習計劃

大牛給的計劃 ——
一般要做到 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 * 算法,最小耗散優先.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ACMer 必備知識(這麼多呀,慢慢學了……

圖論

路徑問題

0/1 邊權最短路徑

BFS

非負邊權最短路徑(Dijkstra)

可以用 Dijkstra 解決問題的特徵

負邊權最短路徑

Bellman-Ford

Bellman-Ford 的 Yen - 氏優化

差分約束系統

Floyd

廣義路徑問題

傳遞閉包

極小極大距離 / 極大極小距離

Euler Path / Tour

圈套圈算法

混合圖的 Euler Path / Tour

Hamilton Path / Tour

特殊圖的 Hamilton Path / Tour 構造

生成樹問題

最小生成樹

第 k 小生成樹

最優比率生成樹

0/1 分數規劃

度限制生成樹

連通性問題

強大的 DFS 算法

無向圖連通性

割點

割邊

二連通分支

有向圖連通性

強連通分支

2-SAT

最小點基

有向無環圖

拓撲排序

有向無環圖與動態規劃的關系

二分圖匹配問題

一般圖問題與二分圖問題的轉換思路

最大匹配

有向圖的最小路徑覆蓋

0 / 1 矩陣的最小覆蓋

完備匹配

最優匹配

穩定婚姻

網絡流問題

網絡流模型的簡單特征和與線性規劃的關系

最大流最小割定理

最大流問題

有上下界的最大流問題

循環流

最小費用最大流 / 最大費用最大流

弦圖的性質和判定

組合數學

解決組合數學問題時常用的思想

逼近

遞推 / 動態規劃

概率問題

Polya 定理

計算幾何 / 解析幾何

計算幾何的核心:叉積 / 面積

解析幾何的主力:複數

基本形

直線,線段

多邊形

凸多邊形 / 凸包

凸包算法的引進,卷包裹法

Graham 掃描法

水平序的引進,共線凸包的補丁

完美凸包算法

相關判定

兩直線相交

兩線段相交

點在任意多邊形內的判定

點在凸多邊形內的判定

經典問題

最小外接圓

近似 O (n) 的最小外接圓算法

點集直徑

旋轉卡殼,對踵點

多邊形的三角剖分

數學 / 數論

最大公約數

Euclid 算法

擴展的 Euclid 算法

同餘方程 / 二元一次不定方程

同餘方程組

線性方程組

高斯消元法

解 mod 2 域上的線性方程組

整系數方程組的精確解法

矩陣

行列式的計算

利用矩陣乘法快速計算遞推關系

分數

分數樹

連分數逼近

數論計算

求 N 的約數個數

求 phi (N)

求約數和

快速數論變換
……
素數問題
概率判素算法
概率因子分解
數據結構
組織結構
二叉堆
左偏樹
二項樹
勝者樹
跳躍表
樣式圖標
斜堆
reap
統計結構
樹狀數組
虛二叉樹
線段樹
矩形面積並
圓形面積並
關系結構
Hash 表
並查集
路徑壓縮思想的應用
STL 中的數據結構
vector
deque
set / map
動態規劃 / 記憶化搜索
動態規劃和記憶化搜索在思考方式上的區別
最長子序列系列問題
最長不下降子序列
最長公共子序列
最長公共不下降子序列
一類 NP 問題的動態規劃解法
樹型動態規劃
背包問題
動態規劃的優化
四邊形不等式
函數的凸凹性
狀態設計
規劃方向
線性規劃
常用思想
二分
最小表示法

KMP
Trie 結構
後綴樹 / 後綴數組
LCA/RMQ
有限狀態自動機理論
排序
選擇 / 冒泡
快速排序
堆排序
歸並排序
基數排序
拓撲排序
排序網絡
熟練掌握數據結構、常用算法匯聚
(一)
不可能都完全記住那麼多的算法.
常用算法,拿過來就可以寫出來
不常用的,拿起書來,看 10 分鐘,就能理解算法 (因為以前記過).
對以前沒有記過的算法,就不好說了,難的可能要研究好幾天.
這樣就可以了.
應該熟練掌握的常用的算法應該有:
各種排序算法(插入排序、冒泡排序、選擇排序,快速排序,堆排序,歸並排序)
線性表 (一般的線性表,棧,隊列) 的插入和刪除
二叉樹的遍歷(前序,中序,後序)
圖的遍歷(深度優先,廣度優先)
二分法查找,排序二叉樹,Hash 查找(處理沖突的方法)。
(二)
分析一個東西,你可以用不同的眼光去看待,有很多時候,就跟自己生活一樣,覺得小時候看待問題很幼稚,現在看問題全面了,而且方式不一樣了,為什麼,就是成長吧,就跟這個一樣的,你對算法,比如寫一個程序,可能直接寫很簡單,可是可以有一些有趣的方式,比如通過什麼樣來表達,怎麼樣更高效.. 等等吧
(三)
於大學裏把基本的專業課學紮實就 ok,如:數據結構,離散,操作系統等。碰到一些基本的數據結構和算法,如查找排序要根據原理馬上能寫出相應的代碼就行了,我個人是這樣理解的,對於更深層次的東西,也是建立在自己熟練的基礎之上的吧
(四)
算法與數據結構考驗試題精析》第 2 版 機械工業出版社
如果你想練習的話,這裏有 N 多的題可以來練習,但實際中能用到的比較少,除非搞一些高端的玩意,不過平時也可以在自己的項目中結合使用
(五)
數據結構在平時可能用不上,但數據結構可以培養你程序時如果注意效率的意識,一個學過數據結構的人和一個沒有學過數據結構的人寫出來的程序可能在效率上有差別。
(六)
搞 ACM 需要的掌握的算法.
要注意,ACM 的競賽性強,因此自己應該和自己的實際應用聯系起來.
適合自己的才是好的,有的人不適合搞算法,喜歡系統架構,因此不要看到別人什麼就眼紅,
發揮自己的長處,這才是重要的.
第一階段:練經典常用算法,下面的每個算法給我打上十到二十遍,同時自己精簡代碼,
因為太常用,所以要練到寫時不用想,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 * 算法,最小耗散優先.
相關的知識

圖論

路徑問題
0/1 邊權最短路徑
BFS
非負邊權最短路徑(Dijkstra)
可以用 Dijkstra 解決問題的特徵
負邊權最短路徑
Bellman-Ford
Bellman-Ford 的 Yen - 氏優化
差分約束系統
Floyd
廣義路徑問題
傳遞閉包
極小極大距離 / 極大極小距離
Euler Path / Tour
圈套圈算法
混合圖的 Euler Path / Tour
Hamilton Path / Tour
特殊圖的 Hamilton Path / Tour 構造

生成樹問題
最小生成樹
第 k 小生成樹
最優比率生成樹
0/1 分數規劃
度限制生成樹

連通性問題
強大的 DFS 算法
無向圖連通性
割點
割邊
二連通分支
有向圖連通性
強連通分支
2-SAT
最小點基

有向無環圖
拓撲排序
有向無環圖與動態規劃的關系

二分圖匹配問題
一般圖問題與二分圖問題的轉換思路
最大匹配
有向圖的最小路徑覆蓋
0 / 1 矩陣的最小覆蓋
完備匹配
最優匹配
穩定婚姻

網絡流問題
網絡流模型的簡單特征和與線性規劃的關系
最大流最小割定理
最大流問題
有上下界的最大流問題
循環流
最小費用最大流 / 最大費用最大流

弦圖的性質和判定
組合數學

解決組合數學問題時常用的思想
逼近
遞推 / 動態規劃
概率問題
Polya 定理
計算幾何 / 解析幾何

計算幾何的核心:叉積 / 面積
解析幾何的主力:複數

基本形

直線,線段
多邊形

凸多邊形 / 凸包
凸包算法的引進,卷包裹法

Graham 掃描法
水平序的引進,共線凸包的補丁

完美凸包算法

相關判定
兩直線相交
兩線段相交
點在任意多邊形內的判定
點在凸多邊形內的判定

經典問題
最小外接圓
近似 O (n) 的最小外接圓算法
點集直徑
旋轉卡殼,對踵點
多邊形的三角剖分
數學 / 數論

最大公約數
Euclid 算法
擴展的 Euclid 算法
同餘方程 / 二元一次不定方程
同餘方程組

線性方程組
高斯消元法
解 mod 2 域上的線性方程組
整系數方程組的精確解法

矩陣
行列式的計算
利用矩陣乘法快速計算遞推關系

分數
分數樹
連分數逼近

數論計算
求 N 的約數個數
求 phi (N)
求約數和
快速數論變換
……
素數問題
概率判素算法
概率因子分解
數據結構
組織結構
二叉堆
左偏樹
二項樹
勝者樹
跳躍表
樣式圖標
斜堆
reap
統計結構
樹狀數組
虛二叉樹
線段樹
矩形面積並
圓形面積並
關系結構
Hash 表
並查集
路徑壓縮思想的應用
STL 中的數據結構
vector
deque
set / map
動態規劃 / 記憶化搜索
動態規劃和記憶化搜索在思考方式上的區別
最長子序列系列問題
最長不下降子序列
最長公共子序列
最長公共不下降子序列
一類 NP 問題的動態規劃解法
樹型動態規劃
背包問題
動態規劃的優化
四邊形不等式
函數的凸凹性
狀態設計
規劃方向
線性規劃
常用思想
二分
最小表示法

KMP
Trie 結構
後綴樹 / 後綴數組
LCA/RMQ
有限狀態自動機理論
排序
選擇 / 冒泡
快速排序
堆排序
歸並排序
基數排序
拓撲排序
排序網絡
熟練掌握數據結構、常用算法匯聚
(一)
不可能都完全記住那麼多的算法.
常用算法,拿過來就可以寫出來
不常用的,拿起書來,看 10 分鐘,就能理解算法 (因為以前記過).
對以前沒有記過的算法,就不好說了,難的可能要研究好幾天.
這樣就可以了.
應該熟練掌握的常用的算法應該有:
各種排序算法(插入排序、冒泡排序、選擇排序,快速排序,堆排序,歸並排序)
線性表 (一般的線性表,棧,隊列) 的插入和刪除
二叉樹的遍歷(前序,中序,後序)
圖的遍歷(深度優先,廣度優先)
二分法查找,排序二叉樹,Hash 查找(處理沖突的方法)。
(二)
分析一個東西,你可以用不同的眼光去看待,有很多時候,就跟自己生活一樣,覺得小時候看待問題很幼稚,現在看問題全面了,而且方式不一樣了,為什麼,就是成長吧,就跟這個一樣的,你對算法,比如寫一個程序,可能直接寫很簡單,可是可以有一些有趣的方式,比如通過什麼樣來表達,怎麼樣更高效.. 等等吧
(三)
於大學裏把基本的專業課學紮實就 ok,如:數據結構,離散,操作系統等。碰到一些基本的數據結構和算法,如查找排序要根據原理馬上能寫出相應的代碼就行了,我個人是這樣理解的,對於更深層次的東西,也是建立在自己熟練的基礎之上的吧
(四)
算法與數據結構考驗試題精析》第 2 版 機械工業出版社
如果你想練習的話,這裏有 N 多的題可以來練習,但實際中能用到的比較少,除非搞一些高端的玩意,不過平時也可以在自己的項目中結合使用
(五)
數據結構在平時可能用不上,但數據結構可以培養你程序時如果注意效率的意識,一個學過數據結構的人和一個沒有學過數據結構的人寫出來的程序可能在效率上有差別。
(六)
搞 ACM 需要的掌握的算法.
要注意,ACM 的競賽性強,因此自己應該和自己的實際應用聯系起來.
適合自己的才是好的,有的人不適合搞算法,喜歡系統架構,因此不要看到別人什麼就眼紅,
發揮自己的長處,這才是重要的.
第一階段:練經典常用算法,下面的每個算法給我打上十到二十遍,同時自己精簡代碼,
因為太常用,所以要練到寫時不用想,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 * 算法,最小耗散優先.

(八)

搞實際項目的話基本用不着多少。lss 說的那點都已經多了。當然,偶個人覺得,判斷一個問題是否 NPC/NPH 還是比較有用的,判是以後就不會把自己的經歷浪費在尋找多項式算法上了。這點 acm 要用,實際項目偶覺得也有用。

acm 的話上面貼的那一長串還不夠用。所謂不夠用,第一,指這些就算都會都不會寫錯,不會建立 dp 模型不會建立圖論模型的話一樣能掛得很慘,這種活的東西不是死做題就能會的。第二,這表還不全。既然圖可以扯到最優比率生成樹,那博弈的話至少也得扯 SG 定理,串的話至少也得扯 AC 自動機(吐槽:不是自動 AC 機),

(九)補充中。。。。

浙江大學 http://acm.zju.edu.cn 北京大學 http://acm.pku.edu.cn/JudgeOnline
天津大學 http://acm.tju.edu.cn 廈門大學 http://acm.xmu.edu.cn/JudgeOnline
福州大學 http://acm.fzu.edu.cn 華中科技 http://acm.hust.edu.cn/JudgeOnline
寧波理工 http://acm.nit.net.cn 合肥工大 http://acm.tdzl.net:83/JudgeOnline
汕頭大學 http://acm.stu.edu.cn 北大內部 http://ai.pku.cn/JudgeOnline
中國科大 http://acm.ustc.edu.cn 暨南大學 http://202.116.24.78/JudgeOnline
浙江工業 http://acm.zjut.edu.cn 中山大學 http://202.116.77.69/sicily
福建師範 http://acm.fjnu.edu.cn 哈工業大 http://acm.hit.edu.cn/ojs/ojs.php
杭電科大 http://acm.hziee.edu.cn 四川大學 http://acm.scu.edu.cn/soj
哈工程大 http://acm.hrbeu.edu.cn 武漢大學 http://acm.whu.edu.cn/noah
同濟大學 http://acm.tongji.edu.cn 湖南大學 http://acm.hnu.cn:8080/online/?
上海大學 http://pc.shu.edu.cn/openjudge/problemlist.php
蘭州大學 http://acm.sundayclub.cn/JudgeOnline/problemlist

OJ 上的一些水題 (可用來練手和增加自信)
(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)
初期:
一。基本算法:
(1) 枚舉. (poj1753,poj2965) (2) 貪心 (poj1328,poj2109,poj2586)
(3) 遞歸和分治法. (4) 遞推.
(5) 構造法.(poj3295) (6) 模擬法.(poj1068,poj2632,poj1573,poj2993,poj2996)
二。圖算法:
(1) 圖的深度優先遍曆和廣度優先遍曆.
(2) 最短路徑算法 (dijkstra,bellman-ford,floyd,heap+dijkstra)
(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)
(3) 最小生成樹算法 (prim,kruskal)
(poj1789,poj2485,poj1258,poj3026)
(4) 拓撲排序 (poj1094)
(5) 二分圖的最大匹配 (匈牙利算法) (poj3041,poj3020)
(6) 最大流的增廣路算法 (KM 算法). (poj1459,poj3436)
三。數據結構.
(1) 串 (poj1035,poj3080,poj1936)
(2) 排序 (快排、歸並排 (與逆序數有關)、堆排) (poj2388,poj2299)
(3) 簡單並查集的應用.
(4) 哈希表和二分查找等高效查找法 (數的 Hash, 串的 Hash)
(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)
(5) 哈夫曼樹 (poj3253)
(6) 堆
(7) trie 樹 (靜態建樹、動態建樹) (poj2513)
四。簡單搜索
(1) 深度優先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)
(2) 廣度優先搜索 (poj3278,poj1426,poj3126,poj3087.poj3414)
(3) 簡單搜索技巧和剪枝 (poj2531,poj1416,poj2676,1129)
五。動態規劃
(1) 背包問題. (poj1837,poj1276)
(2) 型如下表的簡單 DP (可参考 lrj 的書 page149):
1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
2.E [i,j]=opt {D [i-1,j]+xi,D [i,j-1]+yj,D [i-1][j-1]+zij} (最長公共子序列)
(poj3176,poj1080,poj1159)
3.C [i,j]=w [i,j]+opt {C [i,k-1]+C [k,j]}.(最優二分檢索樹問題)
六。數學
(1) 組合數學:
1. 加法原理和乘法原理.
2. 排列組合.
3. 遞推關系.
(POJ3252,poj1850,poj1019,poj1942)
(2) 數論.
1. 素數與整除問題
2. 進制位.
3. 同餘模運算.
(poj2635, poj3292,poj1845,poj2115)
(3) 計算方法.
1. 二分法求解單調函數相關知識.(poj3273,poj3258,poj1905,poj3122)
七。計算幾何學.
(1) 幾何公式.
(2) 叉積和點積的運用 (如線段相交的判定,點到線段的距離等). (poj2031,poj1039)
(3) 多邊型的簡單算法 (求面積) 和相關判定 (點在多邊型內,多邊型是否相交)
(poj1408,poj1584)
(4) 凸包. (poj2187,poj1113)

(七)

第一階段:練經典常用算法,下面的每個算法給我打上十到二十遍,同時自己精簡代碼,
因為太常用,所以要練到寫時不用想,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 * 算法,最小耗散優先.

(八)

搞實際項目的話基本用不着多少。lss 說的那點都已經多了。當然,偶個人覺得,判斷一個問題是否 NPC/NPH 還是比較有用的,判是以後就不會把自己的經歷浪費在尋找多項式算法上了。這點 acm 要用,實際項目偶覺得也有用。

acm 的話上面貼的那一長串還不夠用。所謂不夠用,第一,指這些就算都會都不會寫錯,不會建立 dp 模型不會建立圖論模型的話一樣能掛得很慘,這種活的東西不是死做題就能會的。第二,這表還不全。既然圖可以扯到最優比率生成樹,那博弈的話至少也得扯 SG 定理,串的話至少也得扯 AC 自動機(吐槽:不是自動 AC 機),

(九)補充中。。。。

浙江大學 http://acm.zju.edu.cn 北京大學 http://acm.pku.edu.cn/JudgeOnline
天津大學 http://acm.tju.edu.cn 廈門大學 http://acm.xmu.edu.cn/JudgeOnline
福州大學 http://acm.fzu.edu.cn 華中科技 http://acm.hust.edu.cn/JudgeOnline
寧波理工 http://acm.nit.net.cn 合肥工大 http://acm.tdzl.net:83/JudgeOnline
汕頭大學 http://acm.stu.edu.cn 北大內部 http://ai.pku.cn/JudgeOnline
中國科大 http://acm.ustc.edu.cn 暨南大學 http://202.116.24.78/JudgeOnline
浙江工業 http://acm.zjut.edu.cn 中山大學 http://202.116.77.69/sicily
福建師範 http://acm.fjnu.edu.cn 哈工業大 http://acm.hit.edu.cn/ojs/ojs.php
杭電科大 http://acm.hziee.edu.cn 四川大學 http://acm.scu.edu.cn/soj
哈工程大 http://acm.hrbeu.edu.cn 武漢大學 http://acm.whu.edu.cn/noah
同濟大學 http://acm.tongji.edu.cn 湖南大學 http://acm.hnu.cn:8080/online/?
上海大學 http://pc.shu.edu.cn/openjudge/problemlist.php
蘭州大學 http://acm.sundayclub.cn/JudgeOnline/problemlist

OJ 上的一些水題 (可用來練手和增加自信)
(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)
初期:
一。基本算法:
(1) 枚舉. (poj1753,poj2965) (2) 貪心 (poj1328,poj2109,poj2586)
(3) 遞歸和分治法. (4) 遞推.
(5) 構造法.(poj3295) (6) 模擬法.(poj1068,poj2632,poj1573,poj2993,poj2996)
二。圖算法:
(1) 圖的深度優先遍曆和廣度優先遍曆.
(2) 最短路徑算法 (dijkstra,bellman-ford,floyd,heap+dijkstra)
(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)
(3) 最小生成樹算法 (prim,kruskal)
(poj1789,poj2485,poj1258,poj3026)
(4) 拓撲排序 (poj1094)
(5) 二分圖的最大匹配 (匈牙利算法) (poj3041,poj3020)
(6) 最大流的增廣路算法 (KM 算法). (poj1459,poj3436)
三。數據結構.
(1) 串 (poj1035,poj3080,poj1936)
(2) 排序 (快排、歸並排 (與逆序數有關)、堆排) (poj2388,poj2299)
(3) 簡單並查集的應用.
(4) 哈希表和二分查找等高效查找法 (數的 Hash, 串的 Hash)
(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)
(5) 哈夫曼樹 (poj3253)
(6) 堆
(7) trie 樹 (靜態建樹、動態建樹) (poj2513)
四。簡單搜索
(1) 深度優先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)
(2) 廣度優先搜索 (poj3278,poj1426,poj3126,poj3087.poj3414)
(3) 簡單搜索技巧和剪枝 (poj2531,poj1416,poj2676,1129)
五。動態規劃
(1) 背包問題. (poj1837,poj1276)
(2) 型如下表的簡單 DP (可参考 lrj 的書 page149):
1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
2.E [i,j]=opt {D [i-1,j]+xi,D [i,j-1]+yj,D [i-1][j-1]+zij} (最長公共子序列)
(poj3176,poj1080,poj1159)
3.C [i,j]=w [i,j]+opt {C [i,k-1]+C [k,j]}.(最優二分檢索樹問題)
六。數學
(1) 組合數學:
1. 加法原理和乘法原理.
2. 排列組合.
3. 遞推關系.
(POJ3252,poj1850,poj1019,poj1942)
(2) 數論.
1. 素數與整除問題
2. 進制位.
3. 同餘模運算.
(poj2635, poj3292,poj1845,poj2115)
(3) 計算方法.
1. 二分法求解單調函數相關知識.(poj3273,poj3258,poj1905,poj3122)
七。計算幾何學.
(1) 幾何公式.
(2) 叉積和點積的運用 (如線段相交的判定,點到線段的距離等). (poj2031,poj1039)
(3) 多邊型的簡單算法 (求面積) 和相關判定 (點在多邊形內,多邊形是否相交)
(poj1408,poj1584)
(4) 凸包. (poj2187,poj1113)

(七)

第一階段:練經典常用算法,下面的每個算法給我打上十到二十遍,同時自己精簡代碼,
因為太常用,所以要練到寫時不用想,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 * 算法,最小耗散優先.

(八)

搞實際項目的話基本用不着多少。lss 說的那點都已經多了。當然,偶個人覺得,判斷一個問題是否 NPC/NPH 還是比較有用的,判是以後就不會把自己的經歷浪費在尋找多項式算法上了。這點 acm 要用,實際項目偶覺得也有用。

acm 的話上面貼的那一長串還不夠用。所謂不夠用,第一,指這些就算都會都不會寫錯,不會建立 dp 模型不會建立圖論模型的話一樣能掛得很慘,這種活的東西不是死做題就能會的。第二,這表還不全。既然圖可以扯到最優比率生成樹,那博弈的話至少也得扯 SG 定理,串的話至少也得扯 AC 自動機(吐槽:不是自動 AC 機),

(九)補充中。。。。

浙江大學 http://acm.zju.edu.cn 北京大學 http://acm.pku.edu.cn/JudgeOnline
天津大學 http://acm.tju.edu.cn 廈門大學 http://acm.xmu.edu.cn/JudgeOnline
福州大學 http://acm.fzu.edu.cn 華中科技 http://acm.hust.edu.cn/JudgeOnline
寧波理工 http://acm.nit.net.cn 合肥工大 http://acm.tdzl.net:83/JudgeOnline
汕頭大學 http://acm.stu.edu.cn 北大內部 http://ai.pku.cn/JudgeOnline
中國科大 http://acm.ustc.edu.cn 暨南大學 http://202.116.24.78/JudgeOnline
浙江工業 http://acm.zjut.edu.cn 中山大學 http://202.116.77.69/sicily
福建師範 http://acm.fjnu.edu.cn 哈工業大 http://acm.hit.edu.cn/ojs/ojs.php
杭電科大 http://acm.hziee.edu.cn 四川大學 http://acm.scu.edu.cn/soj
哈工程大 http://acm.hrbeu.edu.cn 武漢大學 http://acm.whu.edu.cn/noah
同濟大學 http://acm.tongji.edu.cn 湖南大學 http://acm.hnu.cn:8080/online/?
上海大學 http://pc.shu.edu.cn/openjudge/problemlist.php
蘭州大學 http://acm.sundayclub.cn/JudgeOnline/problemlist

OJ 上的一些水題 (可用來練手和增加自信)
(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)
初期:
一。基本算法:
(1) 枚舉. (poj1753,poj2965) (2) 貪心 (poj1328,poj2109,poj2586)
(3) 遞歸和分治法. (4) 遞推.
(5) 構造法.(poj3295) (6) 模擬法.(poj1068,poj2632,poj1573,poj2993,poj2996)
二。圖算法:
(1) 圖的深度優先遍曆和廣度優先遍曆.
(2) 最短路徑算法 (dijkstra,bellman-ford,floyd,heap+dijkstra)
(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)
(3) 最小生成樹算法 (prim,kruskal)
(poj1789,poj2485,poj1258,poj3026)
(4) 拓撲排序 (poj1094)
(5) 二分圖的最大匹配 (匈牙利算法) (poj3041,poj3020)
(6) 最大流的增廣路算法 (KM 算法). (poj1459,poj3436)
三。數據結構.
(1) 串 (poj1035,poj3080,poj1936)
(2) 排序 (快排、歸並排 (與逆序數有關)、堆排) (poj2388,poj2299)
(3) 簡單並查集的應用.
(4) 哈希表和二分查找等高效查找法 (數的 Hash, 串的 Hash)
(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)
(5) 哈夫曼樹 (poj3253)
(6) 堆
(7) trie 樹 (靜態建樹、動態建樹) (poj2513)
四。簡單搜索
(1) 深度優先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)
(2) 廣度優先搜索 (poj3278,poj1426,poj3126,poj3087.poj3414)
(3) 簡單搜索技巧和剪枝 (poj2531,poj1416,poj2676,1129)
五。動態規劃
(1) 背包問題. (poj1837,poj1276)
(2) 型如下表的簡單 DP (可参考 lrj 的書 page149):
1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
2.E [i,j]=opt {D [i-1,j]+xi,D [i,j-1]+yj,D [i-1][j-1]+zij} (最長公共子序列)
(poj3176,poj1080,poj1159)
3.C [i,j]=w [i,j]+opt {C [i,k-1]+C [k,j]}.(最優二分檢索樹問題)
六。數學
(1) 組合數學:
1. 加法原理和乘法原理.
2. 排列組合.
3. 遞推關系.
(POJ3252,poj1850,poj1019,poj1942)
(2) 數論.
1. 素數與整除問題
2. 進制位.
3. 同餘模運算.
(poj2635, poj3292,poj1845,poj2115)
(3) 計算方法.
1. 二分法求解單調函數相關知識.(poj3273,poj3258,poj1905,poj3122)
七。計算幾何學.
(1) 幾何公式.
(2) 叉積和點積的運用 (如線段相交的判定,點到線段的距離等). (poj2031,poj1039)
(3) 多邊型的簡單算法 (求面積) 和相關判定 (點在多邊形內,多邊形是否相交)
(poj1408,poj1584)
(4) 凸包. (poj2187,poj1113)

(七)

第一階段:練經典常用算法,下面的每個算法給我打上十到二十遍,同時自己精簡代碼,
因為太常用,所以要練到寫時不用想,10-15 分鐘內打完,甚至關掉顯示器都可以把程序打出來.
1. 最短路 (Floyd、Dijstra,BellmanFord)
2. 最小生成樹 (先寫個 prim,kruskal 要用並查集,不好寫)
3. 大數(高精度)加減乘除
4. 二分查找. (代碼可在五行以內)
5. 叉乘、判線段相交、然後寫個凸包.
6.BFS、DFS, 同時熟練 hash 表 (要熟,要靈活,代碼要簡)
7. 數學上的有:輾轉相除(兩行內),線段交點、多角形面積公式.
8. 調用系統的 qsort, 技巧很多,慢慢掌握.
9. 任意進制間的轉換

第二階段:練習複雜一點,但也較常用的算法。
如:
1. 二分圖匹配(匈牙利),最小路徑覆蓋
2. 網絡流,最小費用流。
3. 線段樹.
4. 並查集。
5. 熟悉動態規劃的各個典型:LCS、最長遞增子串、三角剖分、記憶化 dp
6. 博弈類算法。博弈樹,二進制法等。
7. 最大團,最大獨立集。
8. 判斷點在多邊形內。
9. 差分約束系統.
10. 雙向廣度搜索、A * 算法,最小耗散優先.

(八)

搞實際項目的話基本用不着多少。lss 說的那點都已經多了。當然,偶個人覺得,判斷一個問題是否 NPC/NPH 還是比較有用的,判是以後就不會把自己的經歷浪費在尋找多項式算法上了。這點 acm 要用,實際項目偶覺得也有用。

acm 的話上面貼的那一長串還不夠用。所謂不夠用,第一,指這些就算都會都不會寫錯,不會建立 dp 模型不會建立圖論模型的話一樣能掛得很慘,這種活的東西不是死做題就能會的。第二,這表還不全。既然圖可以扯到最優比率生成樹,那博弈的話至少也得扯 SG 定理,串的話至少也得扯 AC 自動機(吐槽:不是自動 AC 機),

(九)補充中。。。。

浙江大學 http://acm.zju.edu.cn 北京大學 http://acm.pku.edu.cn/JudgeOnline
天津大學 http://acm.tju.edu.cn 廈門大學 http://acm.xmu.edu.cn/JudgeOnline
福州大學 http://acm.fzu.edu.cn 華中科技 http://acm.hust.edu.cn/JudgeOnline
寧波理工 http://acm.nit.net.cn 合肥工大 http://acm.tdzl.net:83/JudgeOnline
汕頭大學 http://acm.stu.edu.cn 北大內部 http://ai.pku.cn/JudgeOnline
中國科大 http://acm.ustc.edu.cn 暨南大學 http://202.116.24.78/JudgeOnline
浙江工業 http://acm.zjut.edu.cn 中山大學 http://202.116.77.69/sicily
福建師範 http://acm.fjnu.edu.cn 哈工業大 http://acm.hit.edu.cn/ojs/ojs.php
杭電科大 http://acm.hziee.edu.cn 四川大學 http://acm.scu.edu.cn/soj
哈工程大 http://acm.hrbeu.edu.cn 武漢大學 http://acm.whu.edu.cn/noah
同濟大學 http://acm.tongji.edu.cn 湖南大學 http://acm.hnu.cn:8080/online/?
上海大學 http://pc.shu.edu.cn/openjudge/problemlist.php
蘭州大學 http://acm.sundayclub.cn/JudgeOnline/problemlist

OJ 上的一些水題 (可用來練手和增加自信)
(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)
初期:
一。基本算法:
(1) 枚舉. (poj1753,poj2965) (2) 貪心 (poj1328,poj2109,poj2586)
(3) 遞歸和分治法. (4) 遞推.
(5) 構造法.(poj3295) (6) 模擬法.(poj1068,poj2632,poj1573,poj2993,poj2996)
二。圖算法:
(1) 圖的深度優先遍曆和廣度優先遍曆.
(2) 最短路徑算法 (dijkstra,bellman-ford,floyd,heap+dijkstra)
(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)
(3) 最小生成樹算法 (prim,kruskal)
(poj1789,poj2485,poj1258,poj3026)
(4) 拓撲排序 (poj1094)
(5) 二分圖的最大匹配 (匈牙利算法) (poj3041,poj3020)
(6) 最大流的增廣路算法 (KM 算法). (poj1459,poj3436)
三。數據結構.
(1) 串 (poj1035,poj3080,poj1936)
(2) 排序 (快排、歸並排 (與逆序數有關)、堆排) (poj2388,poj2299)
(3) 簡單並查集的應用.
(4) 哈希表和二分查找等高效查找法 (數的 Hash, 串的 Hash)
(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)
(5) 哈夫曼樹 (poj3253)
(6) 堆
(7) trie 樹 (靜態建樹、動態建樹) (poj2513)
四。簡單搜索
(1) 深度優先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)
(2) 廣度優先搜索 (poj3278,poj1426,poj3126,poj3087.poj3414)
(3) 簡單搜索技巧和剪枝 (poj2531,poj1416,poj2676,1129)
五。動態規劃
(1) 背包問題. (poj1837,poj1276)
(2) 型如下表的簡單 DP (可参考 lrj 的書 page149):
1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
2.E [i,j]=opt {D [i-1,j]+xi,D [i,j-1]+yj,D [i-1][j-1]+zij} (最長公共子序列)
(poj3176,poj1080,poj1159)
3.C [i,j]=w [i,j]+opt {C [i,k-1]+C [k,j]}.(最優二分檢索樹問題)
六。數學
(1) 組合數學:
1. 加法原理和乘法原理.
2. 排列組合.
3. 遞推關系.
(POJ3252,poj1850,poj1019,poj1942)
(2) 數論.
1. 素數與整除問題
2. 進制位.
3. 同餘模運算.
(poj2635, poj3292,poj1845,poj2115)
(3) 計算方法.
1. 二分法求解單調函數相關知識.(poj3273,poj3258,poj1905,poj3122)
七。計算幾何學.
(1) 幾何公式.
(2) 叉積和點積的運用 (如線段相交的判定,點到線段的距離等). (poj2031,poj1039)
(3) 多邊型的簡單算法 (求面積) 和相關判定 (點在多邊形內,多邊形是否相交)
(poj1408,poj1584)
(4) 凸包. (poj2187,poj1113)

(七)

第一階段:練經典常用算法,下面的每個算法給我打上十到二十遍,同時自己精簡代碼,
因為太常用,所以要練到寫時不用想,10-15 分鐘內打完,甚至關掉顯示器都可以把程序打出來.
1. 最短路 (Floyd、Dijstra,BellmanFord)
2. 最小生成樹 (先寫個 prim,kruskal 要用並查集,不好寫)
3. 大數(高精度)加減乘除
4. 二分查找. (代碼可在五行以內)
5. 叉乘、判線段相交、然後寫個凸包.
6.BFS、DFS, 同時熟練 hash 表 (要熟,要靈活,代碼要簡)
7. 數學上的有:輾轉相除(兩行內),線段交點、多角形面積公式.
8. 調用系統的 qsort, 技巧很多,慢慢掌握.
9. 任意進制間的轉換

第二階段:練習複雜一點,但也較常用的算法。
如:
1. 二分圖匹配(匈牙利),最小路徑覆蓋
2. 網絡流,最小費用流。
3. 線段樹.
4. 並查集。
5. 熟悉動態規劃的各個典型:LCS、最長遞增子串、三角剖分、記憶化 dp
6. 博弈類算法。博弈樹,二進制法等。
7. 最大團,最大獨立集。
8. 判斷點在多邊形內。
9. 差分約束系統.
10. 雙向廣度搜索、A * 算法,最小耗散優先.

(八)

搞實際項目的話基本用不着多少。lss 說的那點都已經多了。當然,偶個人覺得,判斷一個問題是否 NPC/NPH 還是比較有用的,判是以後就不會把自己的經歷浪費在尋找多項式算法上了。這點 acm 要用,實際項目偶覺得也有用。

acm 的話上面貼的那一長串還不夠用。所謂不夠用,第一,指這些就算都會都不會寫錯,不會建立 dp 模型不會建立圖論模型的話一樣能掛得很慘,這種活的東西不是死做題就能會的。第二,這表還不全。既然圖可以扯到最優比率生成樹,那博弈的話至少也得扯 SG 定理,串的話至少也得扯 AC 自動機(吐槽:不是自動 AC 機),

(九)補充中。。。。

浙江大學 http://acm.zju.edu.cn 北京大學 http://acm.pku.edu.cn/JudgeOnline
天津大學 http://acm.tju.edu.cn 廈門大學 http://acm.xmu.edu.cn/JudgeOnline
福州大學 http://acm.fzu.edu.cn 華中科技 http://acm.hust.edu.cn/JudgeOnline
寧波理工 http://acm.nit.net.cn 合肥工大 http://acm.tdzl.net:83/JudgeOnline
汕頭大學 http://acm.stu.edu.cn 北大內部 http://ai.pku.cn/JudgeOnline
中國科大 http://acm.ustc.edu.cn 暨南大學 http://202.116.24.78/JudgeOnline
浙江工業 http://acm.zjut.edu.cn 中山大學 http://202.116.77.69/sicily
福建師範 http://acm.fjnu.edu.cn 哈工業大 http://acm.hit.edu.cn/ojs/ojs.php
杭電科大 http://acm.hziee.edu.cn 四川大學 http://acm.scu.edu.cn/soj
哈工程大 http://acm.hrbeu.edu.cn 武漢大學 http://acm.whu.edu.cn/noah
同濟大學 http://acm.tongji.edu.cn 湖南大學 http://acm.hnu.cn:8080/online/?
上海大學 http://pc.shu.edu.cn/openjudge/problemlist.php
蘭州大學 http://acm.sundayclub.cn/JudgeOnline/problemlist

OJ 上的一些水題 (可用來練手和增加自信)
(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)
初期:
一。基本算法:
(1) 枚舉. (poj1753,poj2965) (2) 貪心 (poj1328,poj2109,poj2586)
(3) 遞歸和分治法. (4) 遞推.
(5) 構造法.(poj3295) (6) 模擬法.(poj1068,poj2632,poj1573,poj2993,poj2996)
二。圖算法:
(1) 圖的深度優先遍曆和廣度優先遍曆.
(2) 最短路徑算法 (dijkstra,bellman-ford,floyd,heap+dijkstra)
(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)
(3) 最小生成樹算法 (prim,kruskal)
(poj1789,poj2485,poj1258,poj3026)
(4) 拓撲排序 (poj1094)
(5) 二分圖的最大匹配 (匈牙利算法) (poj3041,poj3020)
(6) 最大流的增廣路算法 (KM 算法). (poj1459,poj3436)
三。數據結構.
(1) 串 (poj1035,poj3080,poj1936)
(2) 排序 (快排、歸並排 (與逆序數有關)、堆排) (poj2388,poj2299)
(3) 簡單並查集的應用.
(4) 哈希表和二分查找等高效查找法 (數的 Hash, 串的 Hash)
(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)
(5) 哈夫曼樹 (poj3253)
(6) 堆
(7) trie 樹 (靜態建樹、動態建樹) (poj2513)
四。簡單搜索
(1) 深度優先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)
(2) 廣度優先搜索 (poj3278,poj1426,poj3126,poj3087.poj3414)
(3) 簡單搜索技巧和剪枝 (poj2531,poj1416,poj2676,1129)
五。動態規劃
(1) 背包問題. (poj1837,poj1276)
(2) 型如下表的簡單 DP (可参考 lrj 的書 page149):
1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
2.E [i,j]=opt {D [i-1,j]+xi,D [i,j-1]+yj,D [i-1][j-1]+zij} (最長公共子序列)
(poj3176,poj1080,poj1159)
3.C [i,j]=w [i,j]+opt {C [i,k-1]+C [k,j]}.(最優二分檢索樹問題)
六。數學
(1) 組合數學:
1. 加法原理和乘法原理.
2. 排列組合.
3. 遞推關系.
(POJ3252,poj1850,poj1019,poj1942)
(2) 數論.
1. 素數與整除問題
2. 進制位.
3. 同餘模運算.
(poj2635, poj3292,poj1845,poj2115)
(3) 計算方法.
1. 二分法求解單調函數相關知識.(poj3273,poj3258,poj1905,poj3122)
七。計算幾何學.
(1) 幾何公式.
(2) 叉積和點積的運用 (如線段相交的判定,點到線段的距離等). (poj2031,poj

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。