POJ
youth.lin
a tyro at CS and NLP.
展开
-
POJ 2159 Ancient Cipher(字符串排列替换)
原题地址:http://poj.org/problem?id=2159 题意:古罗马采用一种混合替换、排列的方法对明文加密(替换即将一个字符替换为另外一种字符,不同字符替换后的字符各不相同;排列即打乱字符的先后顺序),给定一串密文和一串明文,判断这串密文是否可能表示这串明文。 解题思路题目中只是解释了替换和排列的定义,但没有给出具体的替换规则和排列规则,因此这两种规则执行的先后顺序,以及执行的规原创 2017-03-27 18:07:27 · 506 阅读 · 0 评论 -
POJ 3253 Fence Repair(贪心+优先队列)
原题地址http://poj.org/problem?id=3253 题意:农夫准备把总长度为L的木板切割成N块长度为L1,L2…LN的小木板,对于这N-1次切割,每次切割木板的费用为这块木板的长度。安排切割的次序,使得这N-1次切割的费用最少。 例如长度为21的木板要切成长度为5,8,8的三块木板。长度为21的木板切为长为13和8的木板时,费用为21;再将13切为5+8时,费用为13;总原创 2017-04-28 22:55:27 · 522 阅读 · 0 评论 -
九度OJ 1138 进制转换(求大整数的2进制)
原题地址http://ac.jobdu.com/problem.php?pid=1138 题意:将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 解题思路由于这个10进制数的长度已经达到30位,属于大整数(超出20位的long long)的进制转换。将输入的大整数存在int数组里,把这个数组当作一个整数,模拟小学时候学的整数除法,让这个大整数每次对2取余,最终的余数倒排就是结果,如原创 2017-04-25 22:34:42 · 544 阅读 · 0 评论 -
POJ 1852 Ants(模拟+弹性碰撞)
原题地址http://poj.org/problem?id=1852 题意:在一根长为L厘米的水平木棍上有n只蚂蚁,它们以每秒1cm/s的速度走到木棍一端就会掉下去。现在知道它们起始位置(相对于木棍左端点的距离)。但是不知道它们爬行的方向。两只蚂蚁相遇后,它们会掉头往反方向走。求所有蚂蚁都落下木棍的最短时间和最长时间。 解题思路如果采用穷举搜索的办法枚举所有蚂蚁的初始朝向,那么复杂度为O(2^n原创 2017-04-27 17:53:46 · 668 阅读 · 0 评论 -
POJ 2386 Lake Counting(深度优先搜索)
原题地址http://poj.org/problem?id=2386 题意:有一个大小为N*M的园子,雨后有的格子积了水。八连通((i, j)为中心的九宫格的其余格子)的积水被认为是连续的一片水洼,求出园子里总共有多少水洼。 解题思路本题是典型的枚举搜索题,一开始没有想到比较顺畅直接的解法,后来看了书才发现,搜索的同时可以改变搜索对象来帮助解题。从任意的W开始,不停地把邻接的部分用.来代替。那么原创 2017-04-27 19:24:12 · 582 阅读 · 0 评论 -
POJ 3255 RoadBlocks(次短路+dijkstra变形)
题目http://poj.org/problem?id=3255 题意:求从起点到终点的次短路。次短路是指比最短路长的路径中,相对最短的那一条。 解题思路《挑战程序设计竞赛》中的一道题。 引用别人的博文->图论算法小结:次短路的求解 首先来回顾一下Dijkstra算法的原理:首先把所有结点的最短距离设置为无穷大,然后令d[0]=0。接下来,每次都找到最短路已经确定的经典,更新从它出发的相邻原创 2017-06-30 14:37:19 · 350 阅读 · 0 评论 -
hdu 2962 Trucking(二分+最短路)
AC代码#include <iostream> #include <algorithm> #include <queue> #include <vector> using namespace std; const int maxn = 1005, INF = 1 << 27; typedef pair<int, int> P; //first代表距离,second代表顶点编号int n, road;原创 2017-07-01 19:54:24 · 455 阅读 · 0 评论 -
POJ 1159 Palindrome(最长回文子序列+滚动数组)
题目https://vjudge.net/problem/POJ-1159(POJ崩了,题目参照VJudge里的) 题意:给定一个字符串,求最少需要插入多少字符,使其成为回文串。如Ab3bD最少需要插入2个字符。 解题思路要使插入的字符最少,那就要尽可能利用原字符串中的最长回文子序列。求出了最长回文子序列的长度,用原串长度减去它即答案。 将输入串s逆序,得到s2 求s和s2的最长公共子序列LCS原创 2017-07-02 16:21:20 · 454 阅读 · 0 评论 -
POJ 2533 Longest Ordered Subsequence(最长上升子序列DP)
原题地址http://poj.org/problem?id=2533 最长上升子序列问题:有一个长为n的数列,请求出这个序列中最长的上升子序列的长度。上升子序列指的是对任意的i < j都满足ai < aj的子序列(注意和子串的区别)。 解题思路本题是最长上升子序列(Longest Increasing Sequence, LCS)的裸题,用动态规划求解最为方便。O(n^2)的DP解法定义dp[i原创 2017-04-30 22:54:43 · 348 阅读 · 0 评论 -
POJ 2431 Expedition(贪心+优先队列)
原题地址http://poj.org/problem?id=2431 题意:一辆有P单位汽油的卡车在距离终点L单位距离的起点处,卡车每开一单位距离就要消耗一单位汽油。在途中一共有N个加油站,每个加油站有各自的位置和油量。假设卡车的燃料箱容量无限,请问最少需要加几次油到达终点。如果不能到达则输出-1. 解题思路AC代码#include <iostream> #include <cstdio> #i原创 2017-05-01 16:30:58 · 367 阅读 · 0 评论 -
POJ 3624 Charm Bracelet(0-1背包的动态规划!)
原题地址:http://poj.org/problem?id=3624 0-1背包问题描述如下: 有一个容量为M的背包,和N个物品。这些物品分别有两个属性,体积w和价值v,每种物品只有一个。要求用这个背包装下价值尽可能多的物品,求该最大价值,背包可以不被装满。 因为最优解中,每个物品都有两种可能的情况,即在背包中或者不存在(背包中有0个该物品或者 1个),所以我们把这个问题称为0-1背原创 2017-04-29 21:10:10 · 554 阅读 · 0 评论 -
POJ 3617 Best Cow Line(贪心+最小字典序)
原题地址http://poj.org/problem?id=3617 题意:给定长度为N的字符串S,构造一个新的长度为N的字符串T,使得T的字典序最小。(构造时要么从S的头部删除一个字符加到T的尾部,要么从S的尾部删除一个字符加到T的尾部) 解题思路本题是简单的贪心算法的题目。每次观察S最左、最右两端的字符,取较小的字符,如果两端的字符相同,则从两侧同时向中间查看,直到找到一个能比较出大小的字符原创 2017-04-28 09:44:29 · 446 阅读 · 0 评论 -
POJ 2739 Sum of Consecutive Prime Numbers(素数表的应用)
原题地址http://poj.org/problem?id=2739 题意:某些数字可以由连续几个素数的和表示,给定一个数字,求其有几种这样的表示方法。例:41=2+3+5+7+11+13 或 41=11+13+17 解题思路素数表既然要判断某个数能否表示为连续的素数和,那么首先就要知道如何求素数。 素数是数论和离散数学里非常重要的一部分,这里就如何用“筛法”得到n之内的素数表作总结(参考了以原创 2017-03-28 21:48:02 · 295 阅读 · 0 评论 -
POJ 1083 Moving Tables(区间+计数)
原题地址:http://poj.org/problem?id=1083 题意:一条长廊的北边南边有编号从1到400的200个房间(分单双号),把一张桌子从房间m搬到房间n需要占用m、n之间的所有走廊(包括房间前的走廊),耗时为10分钟,给定所有需要搬动的(m,n)对,求尽可能同时移动桌子的情况下的最短耗时。 解题思路刚开始读题以为是区间重叠的问题,画了很多线段想解法,最后觉得还是没有想到原创 2017-03-29 10:21:21 · 235 阅读 · 0 评论 -
POJ 2586 Y2K Accounting Bug(贪心+枚举)
原题地址http://poj.org/problem?id=2586 题意:已知每个月的经营状况要么盈利s,要么亏损d,若每五个月的汇总都是亏损,求这一年12个月最大盈利额(不能盈利则输出Deficit)。 解题思路这道题被划分到贪心的题库里,但是其实不用花时间在贪心算法的设计上。最直观的贪心思路就是,为了使每5个月亏损且总和盈利,那就要利用相邻的5个月的重叠部分,将亏损的月份放在这些部分且使每原创 2017-04-07 14:28:49 · 347 阅读 · 0 评论 -
POJ 3069 Saruman's Army(贪心+区间覆盖)
原题地址http://poj.org/problem?id=3069 题意:X轴上有n个点Xi,雷达必须被放置在点上,且能探测与其距离为R内的所有点,求能覆盖所有点的最少雷达数。 解题思路这题属于贪心算法的题目,很明显也是区间覆盖问题。我也是愚蠢到极致了,才会想着记录每个点的R范围内的邻居数,对邻居数降序排,在邻居数最多的点上放雷达。浪费了一个半小时,数组套数组,还是WA,debug失败只能参考原创 2017-04-07 21:00:35 · 467 阅读 · 2 评论 -
POJ 1753 Flip Game(枚举+状态压缩BFS)
原题地址http://poj.org/problem?id=1753 题意:十六宫格的棋盘,每个棋子有黑白两面,已知翻转某个棋子会造成其四周(若存在)的棋子都翻转。给定一个棋面,计算最少需要多少次能使整个棋盘的棋子全黑或全白。 解题思路声明:本题的算法不是我自己的思路,学习了大神的方法,觉得是一种非常好的处理简单状态变迁的枚举问题,在这里做下笔记今后可以复习:太长不看版用16个二进制位来代表每个原创 2017-03-30 23:13:15 · 565 阅读 · 0 评论 -
POJ 2965 The Pilots Brothers' refrigerator(枚举+DFS)
原题地址http://poj.org/problem?id=2965 给定4*4矩阵,每个方格为’+’或’-‘,对每个方格状态的翻转都会引起所在行、所在列其它方格的翻转,求最小的翻转次数和翻转序列,使得所有方格都为’-‘。 解题思路本题与前一篇博文《POJ 1753 Flip Game》的题目非常像,都是枚举相关的题目。在POJ 1753里用到了状态压缩的方法,状态压缩的核心思想就是用二进制位来原创 2017-04-05 14:12:25 · 288 阅读 · 0 评论 -
POJ 1328 Radar Installation(贪心+区间覆盖)
原题地址: http://poj.org/problem?id=1328 题意:将一条海岸线看成X轴,X轴上面是大海,海上有若干岛屿,给出雷达的覆盖半径和岛屿的位置,要求在海岸线上建雷达,在雷达能够覆盖全部岛屿情况下,求雷达的最少使用量。原创 2017-04-05 20:29:57 · 320 阅读 · 0 评论 -
POJ 2109 Power of Cryptography(简单计算)
原题地址:http://poj.org/problem?id=2109 已知kn=p,给定n和p,求k。 解题思路不知道目录里这道题为什么被分到贪心算法??? 刚看到题目,被题目的p的范围10^101吓到,以为要用高精度整数+二分来求p的n次根。 但是注意到double的数值范围是[-1.7*10^308, +1.7*10^308],远大于10^101;double有效精度为15-16位,题原创 2017-04-05 22:02:44 · 254 阅读 · 0 评论 -
POJ 1804 Brainman、 EOJ 3234 Sort(归并排序+逆序对)
题目http://poj.org/problem?id=1804 题意:求数组中的逆序对个数。逆序对指的是满足ai > aj的数对(ai, aj)。 解题思路在归并排序的合并过程中,加入统计逆序对的语句即可。 归并排序利用了分治的思想,将数列a[l, r]分成两半a[l, mid]和a[mid+1, r],分别进行归并排序,然后再将这两半合并(merge)起来。 在合并的过程中(设原创 2017-06-29 21:34:26 · 425 阅读 · 0 评论