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解决。