ACM的分类训练题集

1、数论

大概有素数测试(筛法),扩展欧几里得算法,同余模运算,高斯消元,中国剩余定理,莫比乌斯反演等等。

我不擅长这方面(数学烂,还好后期团队里有两位数学大神),不发表评论。

推荐题目:

同余模运算:poj2635, poj3292,poj1845,poj2115

素数测试与筛法:poj2191,poj1811

高斯消元:poj1681,poj1222

扩展欧几里得算法:poj2891,poj1061

中国剩余定理:poj1006,zoj3538

莫比乌斯反演:poj2154

2、图论

最短路,最小生成树,拓扑排序,二分图,最大团,最大流,强连通分量,最近公共祖先,次小生成树,欧拉回路,哈密顿回路等等。

图论理论深,实现又麻烦,不好啃。

推荐题目:

最小费用最大流(poj2516,poj2516,poj2195)

双连通分量(poj2942)

强连通分支及其缩点.(poj2186)

图的割边和割点(poj3352)

最小割模型、网络流规约(poj3308, )

3、动态规划

背包问题,树形DP,数位DP等等。

动态规划给我的感觉是比赛时一道题里面涉及了DP基本上就是难题了……

不开玩笑,动态规划很难,需要时间的积累(多做题),需要锻炼的是用动归解题的思想,这急不来。

推荐题目:

背包问题:hdu2602、poj3624、hdu2546、hdu2955、poj2184、hdu2639

树形DP:poj1155、hdu1011、poj1947、hdu1561、hdu4003、poj2486

概率DP:zoj3383、zoj3460、hdu4405、hdu4336

数位DP:hdu2089、hdu3555、hdu3652、poj3252

4、计算几何

点积和叉积、线段相交、多边形面积、凸包、半平面、圆与点的切线、圆与直线的交、圆与圆的交、圆与多边形的并和交、三维凸包、三维点和直线等等。

计算几何内容繁杂,实现麻烦,精度问题更是让人纠结(本人负责的方向,学习的时候各种泪啊,两次省赛还都没考到……哭)。

推荐题目:

点积和叉积:poj2318、poj2398

线段相交:poj3304、poj1269、poj2653、poj1066、poj1039

凸包:poj1113、poj3348、poj1318、poj1696、hdu1392、poj2187、hdu1348

半平面交:poj3335、poj3130、poj1474、poj1278

曼哈顿距离:hdu4666、poj2926

5、搜索

dfs、bfs、A*、IDA*、双向广搜等等。

前期搜索相对容易入门,后期那些搜索的难题真是难啊。

这几年省赛好像没有单独的搜索题了。

推荐题目:

dfs:poj1724、hrbustoj1179、hdu1728、hdu1045、hdu1312、sdut2152、hdu1426、poj2386、hdu2553、hdu1022、hdu1241、hdu1016、hdu1010、hdu1175

bfs:poj3984、poj3278、hdu1242、hdu1240、hdu1195、hdu2717、hdu1253、hdu1026、hdu1180、hdu2612

6、博弈

巴什博弈、威佐夫博奕、Fibonacci博弈、尼姆博弈、公平组合博弈等等。

博弈不熟,好像是找必胜态,当然也可以找规律……

博弈代码一般都很短,只要分析出来公式(或规律),不难实现。

推荐题目:

poj1067、poj1740、poj2234、poj1082、poj2348、poj2413、poj2419

7、组合数学

容斥原理、抽屉原理、置换群与Polya定理、母函数等等。

记得第五届省赛出了好多组合数学的题……

推荐题目:

置换群:poj2369、poj1026、poj1721、poj3270、poj1879

Polya定理:hdu1812、hdu1817、hdu2481、hdu1286

容斥原理:hdu2204、hdu3208、hdu1796、hdu2841、hdu1695

8、数据结构

串处理、栈和队列、树、哈希、二分查找、并查集、线段树、二维线段树、哈夫曼树、后缀数组等等。

数据结构内容比较杂,涉及的又都是基础的知识,其中的很多思想都可以用在其他题目上,一定要学好。

这里把它作为一个方向,是为了它到了后期的一些高级的数据结构,例如字典树、划分树、线段树、AC自动机等等。

推荐题目:

查找(二分、哈希):poj3349、poj1002、hdu2141、hdu1025

串(AC自动机、KMP):hdu3695、hdu2203、sdut2411、poj2406、hdu1358、hdu3336

并查集:poj2236、poj2524、poj1182、poj1611、hdu1232

字典树:poj2503、poj2001、hdu1247、hdu1075、hdu1251

树状数组:hdu1556、poj1195、poj3321、hdu1541/poj2352

线段树:poj2155、poj1195、poj3468、poj3264、hdu1556、hdu1698、hdu1754、hdu1166

划分树:poj2104、sdut2610

9、模拟

模拟就不举例了,这里只作为一种题型出现,没有什么固定的题目类型。

模拟主要实现麻烦,思路往往不难。只要耐心点,注意细节,多斟酌斟酌,就没问题。

推荐题目:

hdu1030、hdu1033、hdu1035、hdu1057、hdu1063、hdu1002、hdu1004、hdu1013、hdu1015、hdu1017、hdu1020、hdu1022、hdu1029、hdu1031、hdu1033、hdu1034、hdu1035、hdu1036、hdu1037、hdu1039、hdu1042、hdu1047、hdu1048、hdu1049、hdu1050、hdu1057、hdu1062

 

最后加个10。

10、STL

STL,Standard Template Library,标准模板库。

需要了解一下,基本的set、map、vector、queue、algorithm要会用。

很多题目都需要用stl解决,甚至是赤裸裸的考察stl。

Stl的好处在于方便,而且由于它是动态开辟内存,可以解决一些空间开辟不出来的问题。

例如hash空间太大,一下子开辟不出来,可以使用set解决。

 

你可能感兴趣的:(ACM练习)