个人POJ解题记录【不断更新】

*关于本记录:

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

 

你可能感兴趣的:([Algorithms])