ACM第一阶段学习内容
一、知识目录
字符串处理 ................................................................. 3
1、KMP 算法 ............................................................ 3
2、扩展 KMP ............................................................ 6
3、Manacher 最长回文子串 ................................................ 7
4、AC 自动机 ........................................................... 8
5、后缀数组 ........................................................... 10
6、后缀自动机 ......................................................... 14
数学 ..................................................................... 15
1、素数 .............................................................. 15
2、素数筛选和合数分解 .................................................. 18
3、扩展欧几里得算法(求 ax+by=gcd 的解以及逆元素) ......................... 18
4、求逆元............................................................. 19
5、模线性方程组 ....................................................... 19
6、随机素数测试和大数分解(POJ 1811)..................................... 20
7、欧拉函数 ........................................................... 23
8、高斯消元(浮点数) .................................................. 24
9、FFT............................................................... 25
10、高斯消元法求方程组的解 .............................................. 28
11、 整数拆分 ......................................................... 33
12、求 A^B 的约数之和对 MOD 取模 ......................................... 35
13、莫比乌斯反演 ...................................................... 35
14、Baby-Step Giant-Step ............................................ 38
相关公式.............................................................. 38
数据结构.................................................................. 39
1、划分树............................................................. 39
2、RMQ............................................................... 41
3、树链剖分 ........................................................... 43
4、伸展树(splay tree) ............................................... 48
5、动态树............................................................. 53
6、主席树............................................................. 58
图论 ..................................................................... 68
1、最短路............................................................. 68
2、最小生成树 ......................................................... 72
3、次小生成树 ......................................................... 73
4、有向图的强连通分量 .................................................. 74
5、图的割点、桥和双连通分支的基本概念..................................... 77
6、割点与桥 ........................................................... 78
7、边双连通分支 ....................................................... 81
8、点双连通分支 ....................................................... 83
9、最小树形图 ......................................................... 86
10、二分图匹配 ........................................................ 88
11、生成树计数 ........................................................ 91
11、二分图多重匹配 ..................................................... 94
12、KM 算法(二分图最大权匹配).......................................... 95
13、最大流............................................................ 96
14、最小费用最大流 ....................................................102
15、2-SAT...........................................................103
16、曼哈顿最小生成树 ..................................................107
17、一般图匹配带花树 ..................................................110
18、LCA.............................................................113
计算几何.................................................................119
1、基本函数 ..........................................................119
2、凸包 .............................................................123
3、平面最近点对(HDU 1007) ...........................................124
4、旋转卡壳 ..........................................................126
5、半平面交 ..........................................................131
6、三点求圆心坐标(三角形外心) .........................................135
动态规划.................................................................136
1、最长上升子序列 O(nlogn) ............................................136
其他 ....................................................................136
1、高精度............................................................136
2、完全高精度 ........................................................138
3、strtok 和 sscanf 结合输入 ..........................................143
4、解决爆栈,手动加栈 .................................................143
5、STL..............................................................144
6、输入输出外挂 ......................................................145
7、莫队算法 ..........................................................146
二、参考资料
Summer 2017 Code Training 1
模板:上海大学ACM模板-第3-24页
【字符串-参考资料】
1、 从头到尾彻底理解KMP
http://www.cnblogs.com/zhangtianq/p/5839909.html
2、最长回文子串
http://blog.csdn.net/kangroger/article/details/37742639
3、AC自动机最详细的讲解,让你一次学会AC自动机
http://blog.csdn.net/creatorx/article/details/71100840
4、后缀数组
http://www.cnblogs.com/shanchuan04/p/5324009.html
http://blog.csdn.net/fp_hzq/article/details/8990932
5、后缀自动机
https://www.zhihu.com/question/34039162
文件:2017CT1资料_SAM后缀自动机-陈立杰讲稿、2017CT1-柔性字符串匹配、2017CT1-algorithms on strings字符串算法大全。
【数学-参考资料】
1、素数有关算法
http://blog.csdn.net/snow_me/article/details/52588819
2、扩展欧几里德算法
http://blog.csdn.net/zhjchengfeng5/article/details/7786595
3、逆元
http://blog.csdn.net/acdreamers/article/details/8220787
4、Miller_rabin算法
http://blog.csdn.net/maxichu/article/details/45458569
5、欧拉函数
http://blog.csdn.net/sentimental_dog/article/details/52002608
6、模线性方程组
http://blog.csdn.net/qq_21120027/article/details/51340218
Summer 2017 Code Training 2
模板:上海大学ACM模板-第25-42页
【数学-参考资料(续)】
1、高斯消元法
http://blog.csdn.net/duanxian0621/article/details/7408887
2、FFT(快速傅氏变换)
http://www.gatevin.moe/acm/fft%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
3、莫比乌斯反演
http://blog.csdn.net/acdreamers/article/details/8542292
4、离散对数(Baby Step Giant Step)
http://blog.csdn.net/acdreamers/article/details/8579511
【数据结构-参考资料】
1、划分树
http://blog.csdn.net/shiqi_614/article/details/8041390
2、主席树
http://blog.csdn.net/sprintfwater/article/details/9162041
3、区间最值查询(RMQ)
http://blog.csdn.net/liang5630/article/details/7917702
http://blog.csdn.net/metalseed/article/details/7953260
Summer 2017 Code Training 3
模板:上海大学ACM模板-第43-74页
【数据结构-参考资料(续)】
1、树链剖分原理
http://blog.csdn.net/acdreamers/article/details/10591443
2、树状数组
http://blog.csdn.net/ljd4305/article/details/10101535
3、线段树
http://www.cnblogs.com/TenosDoIt/p/3453089.html
4、Splay Tree(伸展树)
http://blog.csdn.net/niuox/article/details/8018280
5、动态树
http://blog.csdn.net/d891320478/article/details/9181385
6、主席树
http://blog.csdn.net/sprintfwater/article/details/9162041
【图论-参考资料】
1、最短路:Dijkstra算法
http://www.cnblogs.com/skywang12345/p/3711512.html
2、最短路:Bellman-Ford算法
http://blog.csdn.net/niushuai666/article/details/6791765
3、最短路:SPFA算法
http://www.layz.net/LAOJ/suanfa/s9-4.html
4、最小生成树:Kruskal算法
http://blog.csdn.net/luomingjun12315/article/details/47700237
5、最小生成树:Prim算法
http://blog.csdn.net/yeruby/article/details/38615045
6、次小生成树
http://yzmduncan.iteye.com/blog/1018358
Summer 2017 Code Training 4
模板:上海大学ACM模板-第74-96页
【图论-参考资料(续)】
1、有向图的强连通分量:Tarjan算法
http://www.cnblogs.com/uncle-lu/p/5876729.html
2、有向图的强连通分量:Kosaraju算法
http://www.cnblogs.com/nullzx/p/6437926.html
3、最小树形图
http://www.cnblogs.com/Ash-ly/p/5536796.html
4、二分图
http://dsqiu.iteye.com/blog/1689505
http://www.renfei.org/blog/bipartite-matching.html
5、二分图最大匹配:匈牙利算法
http://blog.csdn.net/dark_scope/article/details/8880547
http://www.cnblogs.com/pony1993/archive/2012/07/25/2607738.html
6、二分图最大匹配:Hopcroft-Karp算法
http://blog.csdn.net/wall_f/article/details/8248373
7、生成树计数:Matrix-Tree定理
http://blog.csdn.net/longshuai0821/article/details/7764267
8、二分图多重匹配问题
http://blog.csdn.net/u014427196/article/details/48319639
9、二分图最大权匹配:Kuhn-Munkres算法
http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646535.html
Summer 2017 Code Training 5
模板:上海大学ACM模板-第97-121页
【图论-参考资料(续)】
1、最大流问题
http://blog.csdn.net/yiqingnian28/article/details/23388633
http://www.cnblogs.com/kuangbin/archive/2011/07/26/2117636.html
2、最小费用最大流
http://blog.csdn.net/stillxjy/article/details/52047189
3、2-SAT
http://blog.csdn.net/jarjingx/article/details/8521690
4、曼哈顿距离最小生成树
http://blog.csdn.net/acm_cxlove/article/details/8890003
5、莫队算法
http://blog.csdn.net/hzj1054689699/article/details/51866615
6、一般图匹配问题:带花树
http://blog.csdn.net/u014261987/article/details/41350003
http://blog.csdn.net/jackyguo1992/article/details/11271497
7、LCA(最近公共祖先)
http://blog.csdn.net/liangzhaoyang1/article/details/52549822
http://www.cnblogs.com/wuminye/p/3527176.html
http://blog.csdn.net/Janis_z/article/details/52937631?locationNum=6&fps=1
【计算几何-参考资料】
8、计算几何
http://www.cnblogs.com/kuangbin/category/410309.html
文件:HIT-ACM计算几何模板
Summer 2017 Code Training 6
模板:上海大学ACM模板-第122-152页
【计算几何-参考资料】
1、计算几何
http://www.cnblogs.com/kuangbin/category/410309.html
HIT-ACM计算几何模板
【其他-参考资料】
2、动态规划
http://blog.csdn.net/baidu_28312631/article/details/47418773
http://blog.csdn.net/scythe666/article/details/50921628
3、莫队算法
http://blog.csdn.net/hnshhslsh/article/details/50582926
三、题解链接
Summer 2017 Code Training 1
A - Cow Patterns
来源:POJ – 3167
知识点:扩展KMP等
http://www.cnblogs.com/zjh10/articles/2105716.html
http://blog.csdn.net/tmeteorj/article/details/8693366
http://www.cppblog.com/zxb/archive/2010/10/06/128782.aspx?opt=admin
B - Best Sequence
来源:POJ – 1699
知识点:扩展KMP+DFS等
http://blog.csdn.net/zzzz40/article/details/39186109
C – Palindrome
来源:POJ – 3974
知识点:Manacher算法等
http://blog.csdn.net/u010885899/article/details/45366633
http://blog.csdn.net/geniusluzh/article/details/8639759
D - Keywords Search
来源:HDU – 2222
知识点:AC自动机等
http://blog.csdn.net/hnust_xiehonghao/article/details/9130539
E - Longest Common Substring
来源:HDU – 1403
知识点:后缀数组DA算法(倍增算法)等
http://blog.csdn.net/xinag578/article/details/50164599
F - Power Strings
来源:POJ – 2406
知识点:后缀数组DC3算法等
http://blog.csdn.net/libin56842/article/details/46310425
G – String
来源:CodeForces - 123D
知识点:后缀自动机(SAM)等
http://blog.csdn.net/dyx404514/article/details/8713542
http://www.hankcs.com/program/algorithm/codeforces-123d-string.html
H - Prime Distance
来源:POJ – 2689
知识点:大区间素数筛选等
http://www.cnblogs.com/kuangbin/archive/2013/05/20/3089840.html
I - The Factor
来源:HDU – 5428
知识点:素数筛选合数分解等
http://www.bubuko.com/infodetail-1079772.html
http://www.cnblogs.com/Apro/p/4784808.html
J - A/B
来源:HDU - 1576
知识点:扩展欧几里得算法等
http://blog.csdn.net/ljd4305/article/details/26057385
http://blog.csdn.net/lyc1635566ty/article/details/50611246
K - X问题
来源:HDU - 1573
知识点:解一元线性同余方程组、中国剩余定理等
http://www.cnblogs.com/zhangmingcheng/p/4238407.html
http://blog.csdn.net/a601025382s/article/details/10296577
L - Prime Test
来源:POJ – 1811
知识点:大素数判断和素因子分解等
http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646404.html
M - Farey Sequence
来源:POJ – 2478
知识点:欧拉函数等
http://blog.csdn.net/aaaaacmer/article/details/47272037
Summer 2017 Code Training 2
A - Kind of a Blur
来源:HDU - 3359
知识点:高斯消元法等
http://blog.csdn.net/qwb492859377/article/details/47013321
B - A * B Problem Plus
来源:HDU – 1402
知识点:FFT、大整数乘法等
http://blog.csdn.net/sdj222555/article/details/9786527
C - 3-idiots
来源:HDU – 4609
知识点:FFT计数等
http://blog.csdn.net/qq_33184171/article/details/54427994
D - Painter's Problem
来源:POJ – 1681
知识点:高斯消元法(一类开关问题,对2取模的01方程组)等
http://www.cnblogs.com/kuangbin/archive/2012/08/31/2665913.html
E - Widget Factory
来源:POJ – 2947
知识点:高斯消元法(解同余方程组)等
http://www.cnblogs.com/gj-Acit/p/3903085.html
F - Partition
来源:HDU – 4651
知识点:整数拆分等
http://www.cnblogs.com/zhsl/archive/2013/08/07/3242268.html
G - Integer Partition
来源:HDU – 4658
知识点:整数划分、生成函数等
http://blog.csdn.net/a601025382s/article/details/10299367
H - Sumdiv
来源:POJ – 1845
知识点:求A^B的约数之和对MOD取模等
http://www.cnblogs.com/kuangbin/archive/2012/08/10/2631225.html
I - GCD
来源:HDU – 1695
知识点:莫比乌斯反演等
http://blog.csdn.net/lixuepeng_001/article/details/50577932
J - Discrete Logging
来源:POJ – 2417
知识点:离散对数(Baby Step Giant Step)等
http://www.cnblogs.com/kuangbin/archive/2013/08/24/3278852.html
K - K-th Number
来源:POJ – 2104
知识点:经典划分树、主席树等
http://blog.csdn.net/pure_lady/article/details/46806833
http://www.cnblogs.com/oyking/p/3230296.html
L - Sliding Window
来源:POJ – 2823
知识点:单调队列、线段树、一维RMQ等
http://blog.csdn.net/u013351484/article/details/45112271
M – Cornfields
来源:POJ – 2019
知识点:二维RMQ等
http://www.cnblogs.com/kuangbin/p/3227420.html
Summer 2017 Code Training 3
A - Aragorn's Story
来源: HDU – 3966
知识点:树链剖分+树状数组等
http://www.cnblogs.com/kuangbin/archive/2013/08/14/3258736.html
B - Query on a tree
来源: SPOJ – QTREE
知识点:树链剖分+线段树等
http://blog.csdn.net/niuox/article/details/8145842
C - SuperMemo
来源:POJ – 3580
知识点:Splay Tree(伸展树)等
http://blog.csdn.net/jasonzhu8/article/details/5747811
D - Query on The Trees
来源:HDU – 4010
知识点:动态树等
http://www.cnblogs.com/kuangbin/archive/2013/09/04/3300251.html
E - D-query
来源:SPOJ - DQUERY
知识点:主席树-区间不同数的个数 等
http://blog.csdn.net/aozil_yang/article/details/65448883
F - K-th Number
来源:POJ – 2104
知识点:主席树-静态区间第k大 等
http://www.cnblogs.com/kuangbin/archive/2013/09/05/3302731.html
G - Count on a tree
来源:SPOJ – COT
知识点:LCA+主席树等
http://blog.csdn.net/acm_cxlove/article/details/8564167
http://www.cnblogs.com/arbitrary/archive/2013/10/09/3360104.html
H - Dynamic Rankings
来源: ZOJ - 2112
知识点:树状数组+主席树-动态第k大等
http://www.cnblogs.com/kuangbin/p/3308118.html
I - MPI Maelstrom
来源:POJ – 1502
知识点:Dijkstra算法等
http://blog.csdn.net/u013446688/article/details/42708487
J - Invitation Cards
来源:POJ – 1511
知识点:优先队列优化的Dijkstra算法等
http://www.cnblogs.com/kuangbin/p/3140958.html
K - Currency Exchange
来源:POJ – 1860
知识点:Bellman-Ford算法等
http://www.cnblogs.com/kuangbin/archive/2012/08/17/2644807.html
L - Wormholes
来源:POJ - 3259
知识点:SPFA等
http://blog.csdn.net/murmured/article/details/18669909
M - Highways
来源:POJ – 2485
知识点:最小生成树等
http://blog.csdn.net/mikasa3/article/details/51559191
http://blog.csdn.net/fanesemyk/article/details/51137466?locationNum=1&fps=1
N - Design Tutorial: Inverse the Problem
来源:CodeForces - 472D
知识点:最小生成树等
http://blog.csdn.net/u010660276/article/details/39901287
O - Qin Shi Huang's National Road System
来源:HDU - 4081
知识点:次小生成树等
http://blog.csdn.net/shuangde800/article/details/7982106
Summer 2017 Code Training 4
A - Popular Cows
来源:POJ – 2186
知识点:Tarjan算法等
http://www.dontcry-tat.com/2017/04/26/poj-2186-popular-cows/
B - 迷宫城堡
来源:HDU – 1269
知识点:Kosaraju算法等
http://blog.csdn.net/qq7366020/article/details/12943345
C - Critical Links
来源:UVA – 796
知识点:无向图求桥等
http://www.cnblogs.com/chenchengxun/p/4718717.html
D - Electricity
来源:POJ – 2117
知识点:无向图求割点
http://blog.csdn.net/liwen_7/article/details/7919220
E - Redundant Paths
来源:POJ – 3177
知识点:无向图的双连通问题等
http://mojijs.com/2014/11/165169/index.html
F - Knights of the Round Table
来源:POJ – 2942
知识点:点的双连通分量等
http://www.cnblogs.com/wangfang20/p/3201502.html
G - Command Network
来源:POJ – 3164
知识点:最小树形图等
http://blog.csdn.net/shuangde800/article/details/8039359
H - The Perfect Stall
来源:POJ – 1274
知识点:二分图最大匹配:匈牙利算法
http://blog.csdn.net/u013487051/article/details/37656979
I - Asteroids
来源:POJ – 3041
知识点:二分图最大匹配:匈牙利算法
http://blog.csdn.net/yeruby/article/details/39315713
J - COURSES
来源:POJ – 1469
知识点:二分图最大匹配:Hopcroft-Karp算法
http://blog.csdn.net/u011466175/article/details/23709885
K - Lightning
来源:HDU – 4305
知识点:生成树计数:Matrix-Tree定理
http://blog.csdn.net/julyana_lin/article/details/8067024
L - Highways
来源:SPOJ – HIGH
知识点:生成树计数
http://blog.csdn.net/gatevin/article/details/48051879
M - Alice's Chance
来源:POJ – 1698
知识点:二分图多重匹配
http://blog.csdn.net/l123012013048/article/details/47295503
N - 奔小康赚大钱
来源:HDU – 2255
知识点:二分图最大权匹配、KM算法等
http://blog.csdn.net/sr_19930829/article/details/40650359
Summer 2017 Code Training 6
A - Card
来源:HDU - 4350
知识点:模拟等
http://blog.csdn.net/wconvey/article/details/7848235
B - A Round Peg in a Ground Hole
来源:POJ - 1584
知识点:判断凸多边形、判断点在多边形内、判断圆在多边形内等
http://www.cnblogs.com/liuxin13/p/4799667.html
C - Cupid's Arrow
来源:HDU - 1756
知识点:判断点在多边形内外等
http://blog.csdn.net/lttree/article/details/24301607
D - Shape of HDU
来源:HDU - 2108
知识点:判断凸多边形等
http://blog.csdn.net/lttree/article/details/24241987
E - Wall
来源:HDU - 1348
知识点:求凸包周长等
http://blog.csdn.net/W1413882708/article/details/52191385
F - Quoit Design
来源:HDU - 1007
知识点:查找平面最近点对等
http://blog.csdn.net/sun1956/article/details/8294048
G - Beauty Contest
来源:POJ - 2187
知识点:求解平面最远点对等
http://blog.csdn.net/crazy_ac/article/details/10082403
H - Triangle
来源:ZOJ - 2419
知识点:求解平面点集最大三角形等
http://blog.csdn.net/zxy_snow/article/details/6595123
I - The widest road
来源:HDU - 2823
知识点:求解两凸包最小距离等
http://blog.csdn.net/clover_hxy/article/details/54022026
J - Art Gallery
来源:ZOJ- 1369
知识点:半平面交等
http://blog.csdn.net/l04205613/article/details/6626844
K - Kindergarten Electiond
来源:ZOJ-3715
知识点:枚举、贪心等
http://blog.csdn.net/zy691357966/article/details/44853449
L - Attack on Titans
来源:ZOJ-3747
知识点:递推等
http://blog.csdn.net/summer__show_/article/details/70243332
M - Alignment
来源:HDU - 1950
知识点:最长上升子序列等
http://www.cnblogs.com/blueprintf/p/5773393.html
http://blog.csdn.net/wall_f/article/details/8295812
N - Game of Connections
来源:HDU - 1134
知识点:卡特兰数等
http://blog.csdn.net/u013509299/article/details/19758565
O - Group
来源:HDU 4638
知识点:莫队算法、离线线段树等
http://blog.csdn.net/xlzhang223/article/details/51439180
P - Count on a tree II
来源:SPOJ - COT2
知识点:树上的莫队算法、树上区间查询等
http://blog.csdn.net/htt_h/article/details/47729479