todo

初期:
四.简单搜索:
     (1)深度优先搜索.(poj2488,poj3083,poj3009,poj2251)
     (2)广度优先搜索.(poj3087.poj3414)
     (3)简单搜索技巧和剪枝.(poj2531,poj1416,poj2676)
七.计算几何学:
     (1)几何公式.
     (2)叉积和点积的运用(如线段相交的判定,点到线段的距离等).
     (3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交).(poj1584)
     (4)凸包.




中级:
一.基本算法:
     (1)C++的标准模版库的应用.(poj3007).
     (2)较为复杂的模拟题的训练.(poj3393,poj3371,poj1027,poj2706)
二.图算法:
     (1)差分约束系统的建立和求解.(poj2983)
     (2)最小费用最大流.
     (3)双连通分量.(poj2942)
     (4)强连通分支及其缩点.(poj2186)
     (5)图的割边和割点.(poj3352)
     (6)最小割模型、网络流规约.(poj3308)
三.数据结构:
     (1)线段树.(poj2828,poj2777,poj2886,poj2750)
     (2)静态二叉检索树.(poj2482)
     (3)树状树组.
     (4)RMQ.(poj3368)
     (5)并查集的高级应用.
     (6)KMP算法.(poj1961)
四.搜索:
     (1)最优化剪枝和可行性剪枝.
     (2)搜索的技巧和优化.(poj3411,poj1724)
     (3)记忆化搜索.(poj3373,poj1691)
五.动态规划:
     (1)较为复杂的动态规划(如动态规划解特别的施行商问题等).(poj1191,poj1054,poj3280,poj2948,poj1925,poj3034)
     (2)记录状态的动态规划.(poj3254,poj2411,poj1185)
     (3)树型动态规划.(poj2057,poj1947,poj2486,poj3140)
六.数学:
     (1)组合数学:
        1.容斥原理.
        2.抽屉原理.
        3.置换群与Polya定理.
        4.递推关系和母函数.
     (2)数学:
        1.高斯消元法.(poj2947,poj1487,poj2065,poj1166)
        2.概率问题.(poj3071,poj3440)
        3.GCD、扩展的欧几里德(中国剩余定理).(poj3101)
     (3)计算方法:
        1.0/1分数规划.(poj2976)
        2.三分法求解单峰(单谷)的极值.
        3.矩阵法.
        4.迭代逼近.(poj3301)
     (4)随机化算法.(poj2454)
     (5)杂题.(poj1870,poj3296,poj3286,poj1095)
七.计算几何学:
        (1)坐标离散化.
        (2)扫描线算法.(例如求矩形的面积和周长并,常和线段树或堆一起使用).(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)
        (3)多边形的内核(半平面交).(poj3130,poj3335)
        (4)几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)




高级:
一.基本算法要求:
      (1)代码快速写成,精简但不失风格.(poj2525,poj1684,poj1421,poj1048,poj2050,poj3306)
      (2)保证正确性和高效性.(poj3434)
二.图算法:
      (1)度限制最小生成树和第K最短路.(poj1639)
      (2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解).(poj3155, poj2112,poj1966,poj3281,poj2289,poj3216,poj2446)
      (3)最优比率生成树.(poj2728)
      (4)最小树形图.(poj3164)
      (5)次小生成树.
      (6)无向图、有向图的最小环.
三.数据结构:
      (1)trie图的建立和应用.(poj2778)
      (2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法(RMQ+dfs)).
      (3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的目的).
      (4)左偏树(可合并堆).
      (5)后缀树(非常有用的数据结构,也是赛区考题的热点).(poj3415,poj3294)
四.搜索:
      (1)较麻烦的搜索题目训练.(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)
      (2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法.(poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)
      (3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法.(poj3131,poj2870,poj2286)
五.动态规划:
      (1)需要用数据结构优化的动态规划.(poj2754,poj3017)
      (2)四边形不等式理论.
      (3)较难的状态DP.(poj3133)
六.数学:
      (1)组合数学:
        1.MoBius反演.(poj2888)
        2.偏序关系理论.
      (2)博奕论.
        1.极大极小过程.(poj3317,poj1085)
        2.Nim问题.
七.计算几何学:
      (1)半平面求交.(poj3384)
      (2)可视图的建立.(poj2966)
      (3)点集最小圆覆盖.
      (4)对踵点.
八.综合题:(poj3109,poj1478,poj1462,poj2729,poj2048,poj3336,poj3315,poj2148,poj1263)




1.置换,置换的运算,burnside定理,polya计数法 置换的概念还是比较好理解的,《组合数学》里面有讲。对于置换的幂运算大家可以参考一下潘震皓的那篇《置换群快速幂运算研究与探讨》,写的很好。
*简单题:(应该理解概念就可以了)
*置换幂运算:
pku1721 CARDS
pku3128 Leonardo's Notebook
*推荐:(不错的应用)
pku3590 The shuffle Problem


2.素数,整数分解,欧拉函数
素数是可能数论里最永恒,最经典的问题了(我们的队名就叫PrimeMusic^-^)。素数的判断,筛法求素数,大素数的判断···还有很多其他问题都会用到素数。
*最水最水的:(心情不爽时用来解闷吧)
pku1365 Prime Land
pku2034 Anti-prime Sequences
pku3518 Prime Gap
pku1595 Prime Cuts
pku2191 Mersenne Composite Numbers
*筛法:
*反素数:
zoj2562 More Divisors
*素数判断,整数分解:
这两题都要用到miller_rabin的素数判断和pollard_rho的整数分解,算法书上都会有,应该是属于模板题吧,不过最好看懂自己敲一遍。
*欧拉函数:
数论里很多地方都能用到欧拉函数,很重要的。
*推荐:(欧拉函数,费马小定理)
pku3358 Period of an Infinite Binary Expansion
*整数分解
这个也很重要的耶,包括大数的表示方法。
pku2992 Divisors
fzu1753 Another Easy Problem 
hit2813 Garden visiting


3.扩展欧几里得,线性同余,中国剩余定理
这应该是数论里比较重要的一个部分吧,这类的题目也挺多,具体的内容最好先看看数论书,我也整理过一些,可以参考参考:
*简单题:
pku2891 Strange Way to Express Integers
*强烈推荐:
pku3708 Recurrent Function (经典)


4.约瑟夫环问题
这个问题还是比较有意思的,不是很难。
*简单题:
pku3517 And Then There Was One
pku1781 In Danger
pku2244 Eeny Meeny Moo


5.高斯消元法解方程
其实解方程并不是很难,就是按线性代数中学的那种方法,把系数矩阵化成上三角矩阵或数量矩阵,不过有些题目要判断是否有解,或枚举所有解。不过这类题目我认为比较难的还是怎么去建立这个方程组,这个理解了,就没什么大问题了。
*简单题:
*推荐:
*强烈推荐:
pku3185 The Water Bowls
6.矩阵
用矩阵来解决问题确实很常见,但我现在用到还不是很好,很多难题我还不会做。建议大家可以去看Matrix67的那篇关于矩阵的十个问题,确实很经典,但不太好看懂。
*简单:


7.高次同余方程
有关这个问题我应该是没什么发言权了,A^B%C=D,我现在只会求D和B,唉,很想知道A该怎么求。就先推荐几道题目吧,这里涉及到了一个baby-step,giant-step算法。
fzu1759 Super A^B mod C
pku3243 Clever Y
pku2417 Discrete Logging
hdu2815 Mod Tree


8.容斥原理,鸽巢原理
很有用的两个定理,但好像单独考这两个定理的不是很多。
*鸽巢原理:
pku2365 Find a multiple
pku3370 Halloween treats
*容斥原理:
hdu1695 GCD
hdu2461 Rectangles


9.找规律,推公式
这类题目的设计一般都非常巧妙,真的是很难想出来,但只要找到规律或推出公式,就不是很难了。我很多都是在参考别人思路的情况下做的,能自己想出来真的很不容易。
*个人感觉都挺不错的:
pku3372 Candy Distribution
pku3244 Difference between Triplets
pku1809 Regetni
pku1831 不定方程组{枚举几项小的,再用S= 2*P+2(p/2 + 1/2 = 1) 和 S = 2*P + 9(p/2 + 1+1/3 + 1/6 = 1)构造}
pku1737 Connected Graph
pku2480 Longge's problem
pku1792 Hexagonal Routes


10.排列组合,区间计数,计数序列
这些题目可能需要一些组合数学知识,基本上高中的知识就够了。区间计数问题一般不难,但写的时候需要仔细一些,各种情况要考虑到位。至于像卡特兰数,差分序列,斯特灵数···都还挺有意思,可以去看看《组合数学》。
*简单题:
pku1715 Hexadecimal Numbers
pku2282 The Counting Problem
*推荐:
*计数序列:
pku2515 Birthday Cake
pku1707 Sum of powers


11.稳定婚姻问题
    无意中接触到这个算法,还蛮有意思的,《组合数学》中有详细的介绍。
pku3487 The Stable Marriage Problem
zoj1576 Marriage is Stable


12.数位类统计问题
09年刘聪的《浅谈数位类统计问题》,这篇论文相当精彩,也相当详细,每道题都有详细的分析和作者的参考代码。所以我也没什么可说的了,这些题的代码我博客里也就不贴了,大家直接去看论文吧。
简单:
ural1057 Amount of degrees
spoj1182 Sorted bit squence
hdu3271 SNIBB
较难:
spoj2319 Sequence
sgu390 Tickets


1285 组合 & 计数  有限制的可重复排列    dp (pku 的 G++不识 unsigned long long 尴尬)
1351 组合 & 计数  有相邻问题可重复的排列   dfs 
1718 joseph  计算倒数第二个被杀的人是谁 
2142 解不定方程  解不定整数方程ax + by = c 其中a,b,c ,x,y为整数 
2769 同余  刷表 
2917 质因数  分解质因数 
3132 素数    prime其实重点不是prime。。。 dp关键 -_-!
3324 大数 +针对该题目的一些优化mod (2^p-1)可以优化
3508 大数加法  大数加法 
3725 数字游戏  分各位十位百位。。。统计, 也可以通过二分做,注意不要溢出这题不顺


Lepus POJ list
2762 强连通分量
2761 BIT树状数组
2362 可行性剪枝
3460 IDA*搜索
3691 DP+AC自动机
1821 单调队列优化dp


第一类 动态规划
1141
1221
第二类 搜索
1011
1033
2056
第三类 贪心
2054 (难)
1521
2709
第四类 最短路
2679 Bellman-Ford (难)
第七类 二分图
2594
第十类 数论
2447 (难)
第十二类 计算几何
1292
第十三类 高精度 
1060
1996
第十四类 模拟
1029
2028
1120
2271

你可能感兴趣的:(todo)