*关于本记录:
UP主已远离算法类竞赛多年,但闲暇之余还是会做一些ACM小题目玩玩打发时间,并且简单做一个笔记以便将来智商余额不足时可以拿出来翻阅一下,也许能帮助到一些正在学习编程或准备竞赛的同学(神牛请自觉CTRL+W),UP主当年训练以USACO和URAL为主一直没有做POJ,而目前看来POJ题(shui)目(ti)较多所以决定玩玩看 :)
*关于难度(仅供参考):
BASIC (Lv.1~3) - 群众喜闻乐见的简单题,适合尚未经过比赛训练的入门玩家,或享受AC乐趣的玩家
ADVANCED (Lv.4~6) - 需要基本数据结构与算法功底的题目,比赛中不太难的题或程序员面试题大多居于此级别
EXTREME (Lv.7~10) - 需要较高数据结构与算法技巧的题目,真正达到比赛难度或更难的题目
*注:很多题目直接套ACM模板的话很简单,但对于NOI(P)区玩家、或者非竞赛玩家的话并没有现成的模板可以使用,甚至有些时候连STL也是禁止使用的。所以UP主对题目难度的评价标准是 不套模板、不看答案、独立思考、有限时间内、正确实现完整算法 的难度 :)
[PROBLEM / DIFFICULTY Lv.1~10]
[1000 / BASIC Lv.1] 基础;熟悉OnlineJudge基本操作
[1001 / ADVANCED Lv.4] 基础;高精度幂,还是挺容易写错。不过你若是Java玩家可以用BigDecimal混过
[1002 / BASIC Lv.3] 基础;简单的字符串转换和统计
[1004 / BASIC Lv.1] 基础;就是算下平均值
[1005 / BASIC Lv.2] 几何;就是用每年增加后的面积算出半径,检查某点是否被覆盖
[1006 / BASIC Lv.2] 数学;简单的同余题目,枚举天数求余即可
[1007 / BASIC Lv.3] 基础;统计+排序
[1011 / EXTREME Lv.7] 搜索;DFS+剪枝,需要两个比较巧妙的剪枝
[1046 / BASIC Lv.2] 基础;简单的枚举并判断最短距离即可
[1050 / ADVANCED Lv.4] DP;本题O(N^4)就能过,不过可以转为一维最大连续子序列问题,即可优化到O(N^3)
[1051 / BASIC Lv.3] 模拟;这个题目在比赛中是练习手速的
[1057 / ADVANCED Lv.4] 基础;文件夹名不用排序,所以按目录层数很直观的递归打印即可
[1068 / BASIC Lv.3] 模拟;根据输入把括号序列构造出来就很容易了
[1080 / ADVANCED Lv.5] DP;变形的LCS题目,转移方程不难但是需要想清楚边界的状态
[1088 / ADVANCED Lv.4] DP;虽然上下左右都可能移动,但由于都是单向的实际上无后效性,所以可以DP(记忆化搜索实现)
[1095 / ADVANCED Lv.5] 数据结构;先递推算出数组F[N],即N个节点的二叉树有多少种,然后可以递归构造出解
[1105 / BASIC Lv.3] 模拟;题目很简单但描述很烦,可以练习一下位运算
[1110 / BASIC Lv.3] 基础;题意比较烦,实际上只是个简单的Brute-Force问题,但AC人数很少
[1111 / ADVANCED Lv.4] 搜索;只要DFS遍历出连通块,统计周长很简单
[1113 / ADVANCED Lv.4] 几何;基本的二维凸包问题,数据规模也很小
[1118 / ADVANCED Lv.4] 几何;O(n^2logn)计算平面共线点数,按极角排序即可
[1125 / ADVANCED Lv.4] 图论;只需Floyd一下,找出"每个源点的最短路径中最长的那一个点"的最短的那一个
[1131 / ADVANCED Lv.5] 基础;高精度模板+进制转换可以做,不过更优美的做法是直接写高精度小数进制转换
[1141 / ADVANCED Lv.5] DP;添加最少括号使得序列合法,经典区间动态规划题目
[1146 / ADVANCED Lv.5] 搜索;自己动手实现STL的next_permutation,控制DFS从中间状态起搜而不是从初始状态起搜
[1151 / ADVANCED Lv.4] 数据结构;数据规模比较小,只要离散化就可以了
[1159 / ADVANCED Lv.4] DP;基础的区间动态规划,比1141更简单
[1160 / ADVANCED Lv.5] DP;经典题,O(p*v^3)的算法可以AC,要想清楚某个区间内只放一个邮局应该放哪最好
[1163 / ADVANCED Lv.4] DP;入门动态规划题目
[1164 / ADVANCED Lv.4] 图论;遍历求连通分量数以及最大连通分量的面积
[1169 / ADVANCED Lv.5] 搜索;USACO第一章原题,不难但有点恶心
[1177 / EXTREME Lv.7] 数据结构;类似经典离散化题目ShapingRegions,最优的做法不用线段树可以做到O(N^2)
[1182 / EXTREME Lv.7] 数据结构;并查集,维护N个三角型环(初始可以额外引入2N个哨兵元素),每个环上带3个集合
[1188 / BASIC Lv.2] 基础;即求N个长方体的相交部分体积
[1207 / BASIC Lv.2] 基础;直接模拟即可,其实很快
[1218 / BASIC Lv.2] 数学;可以证明答案就是N以内完全平方数的个数即sqrt(N)取下底
[1222 / ADVANCED Lv.4] 搜索;只要枚举一行,后几行方案必定是唯一的;此题可以练习位运算与状态压缩
[1243 / ADVANCED Lv.5] DP;参见朱晨光IOI2004国家集训队论文,详细分析了此题的优化
[1247 / BASIC Lv.1] 基础;直接模拟即可,入门水题
[1251 / ADVANCED Lv.4] 图论;标准的最小生成树
[1258 / ADVANCED Lv.4] 图论;最小生成树USACO例题
[1274 / ADVANCED Lv.4] 图论;二分图最大匹配USACO例题
[1276 / ADVANCED Lv.5] DP;带限制的背包问题,加一个优化后复杂度就和普通背包算法一样了
[1306 / BASIC Lv.2] 数学;即计算组合数,不需要高精度但要保持计算过程的中间值尽量小
[1308 / ADVANCED Lv.4] 图论;并查集判环,统计入度、节点数V、边数E,若无环且所有点入度<=1且E=V-1则是树
[1316 / BASIC Lv.2] 基础;类似于筛法求素数的思想
[1321 / ADVANCED Lv.4] 搜索;状态只有8!种所以直接暴力DFS即可
[1328 / ADVANCED Lv.4] 基础;对每个点求出可以覆盖它的圆心区间,扫一遍求出互相独立的重叠区域数目即可
[1338 / BASIC Lv.3] 构造;这题暴力枚举是不行的,但可以用逆分解质因数来构造出解
[1363 / BASIC Lv.2] 基础;模拟判断出栈序列合法性
[1383 / ADVANCED Lv.4] 图论;题目本质就是求树的最长链,经典的两次遍历算法
[1389 / ADVANCED Lv.4] 数据结构;此题与1151基本相同
[1401 / BASIC Lv.3] 数学;N的阶乘末尾0的个数 = N/5 + N/25 + N/125 + N/625 + ...
[1410 / BASIC Lv.3] 几何;判断线段是否与矩形相交
[1419 / ADVANCED Lv.4] 图论;求图的最大独立集O(2^N)搜索可16ms,但注意不要写成遍历序O(N^N)会TLE
[1423 / BASIC Lv.3] 数学;N的阶乘位数 = SUM{ log10(i) | 1≤i≤N },需要建表解决TLE
[1458 / ADVANCED Lv.4] DP;标准的LCS最长公共子序列问题
[1469 / ADVANCED Lv.4] 图论;匈牙利算法求二分图最大匹配即可
[1511 / ADVANCED Lv.5] 图论;不错的Dijkstra+Heap练习题(也可以练习SPFA),注意需要建正反两个图
[1664 / ADVANCED Lv.4] DP;题目可化为整数拆分问题F[m,n] = F[m,n-1] + F[m-n,n]
[2309 / BASIC Lv.3] 基础;满二叉树的性质,稍微推推就出来了
[2352 / ADVANCED Lv.5] 数据结构;先排序然后用线段树求逆序对
[2353 / ADVANCED Lv.5] DP;需要在常见的二维状态基础上再加一维代表方向,人称双重DP
[2606 / BASIC Lv.2] 几何;此题是1118的削弱版,只要O(n^3)暴力即可
[2985 / EXTREME Lv.8] 数据结构;并查集+Splay可以AC,此题考验玩家的数据结构功力,如果现场手写不用模板还是很容易错
[3903 / ADVANCED Lv.6] DP;经典最长不下降(LIS)序列问题,但此题使用O(n^2)朴素方法不行,需要用O(nlogn)的优化算法
[3974 / EXTREME Lv.7] DP;最长回文子串,曾在EA面试也遇到过此题,朴素O(n^2)超时,有个精彩的Manacher算法可以做到O(n)
[3978 / BASIC Lv.2] 基础;筛法求素数就可以了
[3979 / BASIC Lv.3] 模拟;字符串处理+简单模拟,可以练下STL的String API
[3981 / BASIC Lv.1] 基础;简单字符串处理,可以练下STL的String API
[3982 / BASIC Lv.3] 基础;高精度加法
[3983 / BASIC Lv.3] 基础;计算带括号的24点,枚举运算符+枚举优先级+表达式求值即可
[3984 / ADVANCED Lv.4] 图论;由于数据很小,随便哪种能求路径的算法就行了
(不断更新中)
copyright by
scarlet.MP5