acm数学题

数学类题目小结

    从放暑假前周sir给我讲了一个用polya计数法和burnside定理做的题目(pku2409)后,突然觉得组合数学挺有意思,然后从那时起到现在几乎都在做这类的题目。
做到现在感觉这类题目的一些基本知识点都差不多有所了解了,水题也刷了不少,但还有很多难题自己实在是做不动,所以准备把这类题目先放一放,然后把前段时间做的水题整理一下(供以后的初学者参考,大牛就不要看了哈,都是水题)。剩下的比较难的题目就慢慢来吧,以后做出来再不上,这个小结会不断地更新。也希望大家有好的题目可以推荐一下,分享一下哈。

     感谢:周sir,J_factory和福州大学神牛aekdycoin,大连理工大学神牛czyuan。

不扯了,进入主题:

    1.burnside定理,polya计数法
这个专题我单独写了个小结,大家可以简单参考一下:polya 计数法,burnside定理小结

    2.置换,置换的运算
    置换的概念还是比较好理解的,《组合数学》里面有讲。对于置换的幂运算大家可以参考一下潘震皓的那篇《置换群快速幂运算研究与探讨》,写的很好。
*简单题:(应该理解概念就可以了)
pku3270 Cow Sorting
http://acm.pku.edu.cn/JudgeOnline/problem?id=3270
    pku1026 Cipher
http://acm.pku.edu.cn/JudgeOnline/problem?id=1026
    *置换幂运算:
pku1721 CARDS
http://162.105.81.212/JudgeOnline/problem?id=1721
    pku3128 Leonardo's Notebook
http://162.105.81.212/JudgeOnline/problem?id=3128
    *推荐:(不错的应用)
pku3590 The shuffle Problem
http://162.105.81.212/JudgeOnline/problem?id=3590

    3.素数,整数分解,欧拉函数
素数是可能数论里最永恒,最经典的问题了(我们的队名就叫PrimeMusic^-^)。素数的判断,筛法求素数,大素数的判断···还有很多其他问题都会用到素数。
*最水最水的:(心情不爽时用来解闷吧)
pku1365 Prime Land
pku2034 Anti-prime Sequences
pku2739 Sum of Consecutive Prime Numbers
pku3518 Prime Gap
pku3126 Prime Path
pku1595 Prime Cuts
pku3641 Pseudoprime numbers
pku2191 Mersenne Composite Numbers
pku1730 Perfect Pth Powers
pku2262 Goldbach's Conjecture
pku2909 Goldbach's Conjecture
*筛法:
pku2689 Prime Distance(很好的一个应用)
http://162.105.81.212/JudgeOnline/problem?id=2689
    *反素数:
zoj2562 More Divisors
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2562
    *素数判断,整数分解:
这两题都要用到miller_rabin的素数判断和pollard_rho的整数分解,算法书上都会有,应该是属于模板题吧,不过最好看懂自己敲一遍。
pku1811 Prime Test
http://acm.pku.edu.cn/JudgeOnline/problem?id=1811
    pku2429 GCD & LCM Inverse
http://acm.pku.edu.cn/JudgeOnline/problem?id=2429
    *欧拉函数:
数论里很多地方都能用到欧拉函数,很重要的。
pku1284 Primitive Roots (很水)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1284
    pku2407 Relatives (很水)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2407
    pku2773 Happy 2006
http://162.105.81.212/JudgeOnline/problem?id=2773
    pku2478 Farey Sequence (快速求欧拉函数)
http://162.105.81.212/JudgeOnline/problem?id=2478
    pku3090 Visible Lattice Points (法雷级数)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3090
    *推荐:(欧拉函数,费马小定理)
pku3358 Period of an Infinite Binary Expansion
http://acm.pku.edu.cn/JudgeOnline/problem?id=3358
    *整数分解
这个也很重要的耶,包括大数的表示方法。
pku2992 Divisors
http://acm.pku.edu.cn/JudgeOnline/problem?id=2992
    fzu1753 Another Easy Problem
http://acm.fzu.edu.cn/problem.php?pid=1753
    hit2813 Garden visiting
http://acm-hit.sunner.cn/judge/show.php?Proid=2813
    pku3101 Astronomy (分数的最小公倍数)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3101

    4.扩展欧几里得,线性同余,中国剩余定理
    这应该是数论里比较重要的一个部分吧,这类的题目也挺多,具体的内容最好先看看数论书,我也整理过一些,可以参考参考:
http://hi.baidu.com/%B1%BF%D0%A1%BA%A2%5Fshw/blog/item/0676025d56a87d4afbf2c093.html
    *简单题:
pku1006 Biorhythms
http://acm.pku.edu.cn/JudgeOnline/problem?id=1006
    pku1061 青蛙的约会
http://acm.pku.edu.cn/JudgeOnline/problem?id=1061
    pku2891 Strange Way to Express Integers
http://acm.pku.edu.cn/JudgeOnline/problem?id=2891
    pku2115 C Looooops
http://acm.pku.edu.cn/JudgeOnline/problem?id=2115
    pku2142 The Balance
http://162.105.81.212/JudgeOnline/problem?id=2142
    *强烈推荐:
sgu106 The equation
http://acm.sgu.ru/problem.php?contest=0&problem=106
    pku3708 Recurrent Function (经典)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3708

    5.约瑟夫环问题
这个问题还是比较有意思的,不是很难。
*简单题:
pku3517 And Then There Was One
http://acm.pku.edu.cn/JudgeOnline/problem?id=3517
    pku1781 In Danger
http://acm.pku.edu.cn/JudgeOnline/problem?id=1781
    pku1012 Joseph
http://162.105.81.212/JudgeOnline/problem?id=1012
    pku2244 Eeny Meeny Moo
http://162.105.81.212/JudgeOnline/problem?id=2244
    *推荐:
pku2886 Who Gets the Most Candies?
http://162.105.81.212/JudgeOnline/problem?id=2886

    6.高斯消元法解方程
其实解方程并不是很难,就是按线性代数中学的那种方法,把系数矩阵化成上三角矩阵或数量矩阵,不过有些题目要判断是否有解,或枚举所有解。不过这类题目我认为比较难的还是怎么去建立这个方程组,这个理解了,就没什么大问题了。
*简单题:
pku1222 EXTENDED LIGHTS OUT
http://162.105.81.212/JudgeOnline/problem?id=1222
    pku1681 Painter's Problem
http://162.105.81.212/JudgeOnline/problem?id=1681
    pku1830 开关问题
http://162.105.81.212/JudgeOnline/problem?id=1830
    *推荐:
pku2947 Widget Factory
http://162.105.81.212/JudgeOnline/problem?id=2947
    pku2065 SETI
http://162.105.81.212/JudgeOnline/problem?id=2065
    *强烈推荐:
pku1753 Flip Game
http://162.105.81.212/JudgeOnline/problem?id=1753
    pku3185 The Water Bowls
http://162.105.81.212/JudgeOnline/problem?id=3185
    *变态题:
pku1487 Single-Player Games
http://162.105.81.212/JudgeOnline/problem?id=1487  

7.矩阵
用矩阵来解决问题确实很常见,但我现在用到还不是很好,很多难题我还不会做。建议大家可以去看Matrix67的那篇关于矩阵的十个问题,确实很经典,但不太好看懂。
*简单:
pku3070 Fibonacci
http://162.105.81.212/JudgeOnline/problem?id=3070
    pku3233 Matrix Power Series
http://162.105.81.212/JudgeOnline/problem?id=3233
    pku3735 Training little cats
http://162.105.81.212/JudgeOnline/problem?id=3735

    8.高次同余方程
有关这个问题我应该是没什么发言权了,A^B%C=D,我现在只会求D和B,唉,很想知道A该怎么求。就先推荐几道题目吧,这里涉及到了一个baby-step,giant-step算法。
fzu1759 Super A^B mod C
http://acm.fzu.edu.cn/problem.php?pid=1759
    pku3243 Clever Y
http://162.105.81.212/JudgeOnline/problem?id=3243
    pku2417 Discrete Logging
http://162.105.81.212/JudgeOnline/problem?id=2417
    hdu2815 Mod Tree
http://acm.hdu.edu.cn/showproblem.php?pid=2815

    9.容斥原理,鸽巢原理
    很有用的两个定理,但好像单独考这两个定理的不是很多。
*鸽巢原理:
pku2365 Find a multiple
http://162.105.81.212/JudgeOnline/problem?id=2356
    pku3370 Halloween treats
http://162.105.81.212/JudgeOnline/problem?id=3370
    *容斥原理:
hdu1695 GCD
http://acm.hdu.edu.cn/showproblem.php?pid=1695
    hdu2461 Rectangles
http://acm.hdu.edu.cn/showproblem.php?pid=2461

    10.找规律,推公式
这类题目的设计一般都非常巧妙,真的是很难想出来,但只要找到规律或推出公式,就不是很难了。我很多都是在参考别人思路的情况下做的,能自己想出来真的很不容易。
*个人感觉都挺不错的:
pku3372 Candy Distribution
http://162.105.81.212/JudgeOnline/problem?id=3372
    pku3244 Difference between Triplets
http://162.105.81.212/JudgeOnline/problem?id=3244
    pku1809 Regetni
http://162.105.81.212/JudgeOnline/problem?id=1809
    pku1831 不定方程组
http://162.105.81.212/JudgeOnline/problem?id=1831
    pku1737 Connected Graph
http://162.105.81.212/JudgeOnline/problem?id=1737
    pku2480 Longge's problem
http://162.105.81.212/JudgeOnline/problem?id=2480
    pku1792 Hexagonal Routes
http://acm.pku.edu.cn/JudgeOnline/problem?id=1792

    11.排列组合,区间计数,计数序列
这些题目可能需要一些组合数学知识,基本上高中的知识就够了。区间计数问题一般不难,但写的时候需要仔细一些,各种情况要考虑到位。至于像卡特兰数,差分序列,斯特灵数···都还挺有意思,可以去看看《组合数学》。
*简单题:
pku1850 Code
http://162.105.81.212/JudgeOnline/problem?id=1850
    pku1150 The Last Non-zero Digit
http://162.105.81.212/JudgeOnline/problem?id=1150
    pku1715 Hexadecimal Numbers
http://162.105.81.212/JudgeOnline/problem?id=1715
    pku2282 The Counting Problem
http://162.105.81.212/JudgeOnline/problem?id=2282
    pku3286 How many 0's?
http://162.105.81.212/JudgeOnline/problem?id=3286
    *推荐:
pku3252 Round Numbers
http://162.105.81.212/JudgeOnline/problem?id=3252
    *计数序列:
pku1430 Binary Stirling Numbers
http://162.105.81.212/JudgeOnline/problem?id=1430
    pku2515 Birthday Cake
http://acm.pku.edu.cn/JudgeOnline/problem?id=2515
    pku1707 Sum of powers
http://acm.pku.edu.cn/JudgeOnline/problem?id=1707

    12.二分法
二分的思想还是很重要的,这里就简单推荐几个纯粹的二分题。
*简单:
pku3273 Monthly Expense
http://162.105.81.212/JudgeOnline/problem?id=3273
    pku3258 River Hopscotch
http://162.105.81.212/JudgeOnline/problem?id=3258
    pku1905 Expanding Rods
http://162.105.81.212/JudgeOnline/problem?id=1905
    pku3122 Pie
http://162.105.81.212/JudgeOnline/problem?id=3122
    *推荐:
pku1845 Sumdiv
http://acm.pku.edu.cn/JudgeOnline/problem?id=1845

    13.稳定婚姻问题
    无意中接触到这个算法,还蛮有意思的,《组合数学》中有详细的介绍。
pku3487 The Stable Marriage Problem
http://acm.pku.edu.cn/JudgeOnline/problem?id=3487
    zoj1576 Marriage is Stable
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1576

   14.数位类统计问题
    在航点月赛中第一次接触到这类问题,scau大牛little龙推荐我看了一篇论文,09年刘聪的《浅谈数位类统计问题》,这篇论文相当精彩,也相当详细,每道题都有详细的分析和作者的参考代码。所以我也没什么可说的了,这些题的代码我博客里也就不贴了,大家直接去看论文吧。
简单:
ural1057 Amount of degrees
http://acm.timus.ru/problem.aspx?space=1&num=1057
    spoj1182 Sorted bit squence
https://www.spoj.pl/problems/SORTBIT/
    hdu3271 SNIBB
http://acm.hdu.edu.cn/showproblem.php?pid=3271
    较难:
spoj2319 Sequence
https://www.spoj.pl/problems/BIGSEQ/
    sgu390 Tickets
http://acm.sgu.ru/problem.php?contest=0&problem=390

      以上分类的题目在我的博客里都可以找到详细的解题报告和参考代码,由于比较麻烦就没加链接,需要的可以用我的站内搜索找到。

    本小结会不断更新,转载请注明出处。

     严重声明:本文只适合ACM初学者,路过的大牛如有相同类型的比较好的题目可以推荐一些啊。




 1 推荐题库


• http://ace.delos.com/usaco/
美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,

全部的题解及标程还有题目翻译可以baidu 一个叫NOCOW 的网站。


• http://livearchive.onlinejudge.org/

上面有全部的赛区真题,绝大部分都可以提交,不适合当题库刷,不过在这里找题非常方便。


• http://poj.org/

不解释了,中国最知名的oj,题量非常之大,历史也很悠久,推荐刷一些代表性的题目。


• http://acm.timus.ru/
Ural 大学的oj,国外oj 中非常好的一个,题目非常锻炼基本功,管理员会不时添加一些新数据rejudge,

推荐找些通过人数适中的题目割一割。


• http://acm.sgu.ru/

SGU 大学的oj,题目比较经典(比较老,几百年不更新了),不是特别推荐。


• http://www.spoj.pl
比较奇葩的一个oj,有一些与众不同的提交模式,也有很多著名的系列题目,qtree 等,题目质量很好,

但问题是国内的题解较少,新手如果只是想去割水题还是不要去了。


• http://acm.hdu.edu.cn
航电大学的oj,亮点是上面独有的中国多校联合训练的题目,而且有一版(貌似是20 开头的那版)水题

大全,新手提高很不错。


• http://acm.zju.edu.cn

每个月定时有月赛,浙大出题非常靠谱,推荐每个月月赛可以做一做。


• http://acm.hust.edu.cn
华中科技大学的oj,也就是各大oj 著名的virtual judge(三国五虎上将)的始作俑者,亮点就是那个模

拟比赛的功能异常好用,平时大家可以自己配题做做模拟比赛。


• http://www.codeforces.com
著名线上比赛网站,几乎每周都有一场线上比赛,有各国牛人参加,强烈推荐按时参加提高实力(要克

服时差问题)。


• http://www.topcoder.com/tc
更著名的一个线上比赛网站,历史相当悠久,而且有丰富的奖金,强烈推荐去做algorithm 比赛的single

round match,非常提高智商。


2 算法总结及推荐题目



2.1 C++ STL


• STL 容器: set, map, vector, priority_queue, queue, stack, deque, bitset
• STL 算法: sort, unique, nth_element, reverse, rotate, next_permution, find, for_each, count, lower_bound,

max, swap, random_shuffle


2.2 基本算法


• 枚举: poj1753, poj2965, zoj1716, zoj3356, ural1010
• 贪心: poj1328, poj2109, poj2586, ural1303, sgu195, sgu171
• 递归与分治: ural1181, poj1579, poj1845, poj3714
• 构造: poj3922, poj1092, sgu121
• 模拟: poj3125, poj1068, poj2993, ural1007
• 排序: ural1082, poj2092, poj1694
• KMP 算法: poj2406
• 扩展KMP: poj3376, poj1699
• 二分法: poj1905, poj2002
• 三分法: hdu3400, hdu2298
• 矩阵乘法: zoj2105, zoj3289
• 离散化: ural1019, sgu177
• 快速傅立叶变换: poj2821

• 环状字符串最小表示: poj1509


2.3 图论


• 深度优先遍历: poj2488
• 宽度优先遍历: poj3620, poj2251
• 最短路: poj1847, poj1062
• 最小生成树: zoj1914
• 拓扑排序: zoj2193, zoj1060
• 二分图最大匹配: poj1469
• 二分图的最大权匹配: ural1076
• 稳定婚配问题: poj3487
• 最大流与最小割: poj1459
• 带下界的最大流: poj2396
• 最小费用最大流: poj2159
• 差分约束系统: poj1275
• 双连通分量: zoj2588
• 强连通分量: zoj2470, poj2186
• 割边及割点: poj3352, poj3177
• 度限制生成树: poj1638, hdu3070
• K 短路: poj2449, sgu145
• 最近公共祖先: poj1330
• 最优比率生成树: poj2728
• 次小生成树: poj1679
• 最小树形图: poj3164
• 欧拉回路与路径: poj1386, poj2337
• 哈密顿回路: sgu122
• 旅行商问题: poj2288
• 极大团搜索: poj2989
• 弦图的判定与应用: zoj1015

• 任意图的最大匹配: ural1099


2.4 数据结构


• 栈与队列: poj2559
• 并查集: poj1611, poj1182
• 哈希表: poj1840, poj1186
• 优先队列: poj1862, poj3253
• 可合并堆: zoj2334
• 字母树及AC 自动机: zoj3430, zoj3228
• 线段树: zoj3317, zoj1610
• 树状数组: poj2299, poj2352
• 倍增表(RMQ): poj3368, poj2452
• 平衡二叉树: poj2892, poj2418, poj3580
• 后缀数组: poj2774, poj3294
• KD 树: spoj2835, poj2528
• 树链剖分: poj3237, spoj2666, spoj2798
• 树的分治算法: poj2114, poj1987

• 动态树: hdu2475, hdu3601, hdu4010


2.5 搜索


• 简单技巧与剪枝: poj1033, poj3009
• 最优化与可行性剪枝: poj1011, poj1190
• 记忆化搜索: poj1191, poj1088
• 迭代加深: poj2286, poj2032
• A 搜索: hdu2467, poj1077
• Dancing Link: poj3074, hdu4069
• 折半搜索: zoj3631
• 双向广搜: poj1198, poj1915


2.6 动态规划


• 资源分配问题: poj3624, poj2063
• 区间划分问题: poj3280
• 状态压缩问题: poj1185
• 树形DP: poj1463, poj3345
• 数据结构优化DP: poj2374, poj2355
• 四边形不等式: poj1160
• 队列优化: zoj3399
• 插头表示的状态压缩DP: poj1739
• 最小表示法的状态压缩DP: spoj2159

• 数位DP: hdu3555, sgu258, sgu390


2.7 数学


• 排列组合: poj1850, poj3252
• Lucas 定理: poj3219
• 素数测试与筛法: poj2191, poj1811
• 大数分解的快速算法: poj1142
• 进位制: poj2798, poj1702
• 同余模运算: poj1006, poj2115
• 容斥原理: poj3904, poj1173
• 置换群与Burnside 引理: poj2888
• 递推关系与母函数: poj3734
• 高斯消元: poj1681, poj1222
• 概率与统计: poj2151, poj1021
• 扩展欧几里得算法: poj2891, poj1061
• 中国剩余定理: poj1006, zoj3538
• 离散对数与离散根: sgu261
• 拉格朗日插值: uva4209
• 迭代逼近: poj2868, poj3933
• 莫比乌斯反演: poj2154
• 博弈论与SG 函数: poj2960, poj2311
• 偏序论与格: poj1065, poj3636


2.8 计算几何


• 点积与叉积: zoj1010
• 线段相交: zoj1648
• 简单多边形的面积: poj1654
• 点到线段的最近最远距离: ural1348
• 凸包: poj1113
• 对锺点: poj2187
• 圆与点的切线: poj1375
• 圆与直线的交: poj1263
• 圆与圆的交: poj2564
• 圆与多边形的并与交: poj3675
• 点在多边形内: poj2398
• 半平面交: poj1474, poj2540
• 最小圆覆盖: zoj1450, spoj145
• 三维凸包: poj3528
• 三维点与直线的表示: poj3129

• 线性规划: poj1755


3 推荐书籍


• 《Introduction to Algorithms》
著名的算法大全,囊括全部的基础算法,其详尽程度超乎想象,而且都做了不同程度的扩展,若能同时

配合做一做上面的习题,受益匪浅。


• 《算法艺术与信息学竞赛》
俗称黑书,lrj 的成名之作,非常开拓视野,推荐阅读并掌握。另外,lrj 最近出了一本白书,我没读过,

听说更加基础,有兴趣的同学可以去读一读。


• 《Concrete Mathematics》
计算机学科的必备书籍之一,该书几乎包括计算机科学用到的全部数学知识,如果感兴趣,推荐深入阅

读更专业的书籍(组合数学、初等数论、离散数学、线性代数等等)。


• 《How to solve it》
这一本与上面基本不同,讲的是怎样解题,一本可以帮助你更好地数学建模抽象问题的书籍,不光对竞

赛,对整个思维方式都有帮助。


• 《Computational Geometry Algorithms and Applications》
相当详细的一本计算几何书籍,计算几何往往是一场比赛中最考研基本功最不需要思维复杂度的题目,

练好计算几何对比赛相当有利。


• 《C++ 程序设计思想与方法》
对C++ 语言特性不熟悉的同学建议看看,很好的一本介绍C++ 语言的书籍,有余力的建议再学个

java,写大模拟题、高精度题都有巨大优势。


• 全部的NOI 国家集训队作业以及论文
在网上全部可以找到,非常好的资料,都是历年的强手将当时最先进的知识整理所得,也包括不少题库
的题解。

你可能感兴趣的:(数论,组合数学)