![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
POJ
文章平均质量分 81
sprite_
这个作者很懒,什么都没留下…
展开
-
poj1661 Help Jimmy(DP)
题目链接:http://poj.org/problem?id=1661题目大意:中文题。思路:这个题目可以用DP。对于这个问题,要求总的时间最短。如果在某一块板上,可以选择往左或者往右走。如果此刻我们知道了往左走和往右走到达地面所用的最短时间,那么我们就可以判断出往哪个方向走是最优的。如果我们设置dp[i][j],dp[0][i]表示在第i块板上往左走的最短时间,dp[1][i原创 2015-09-14 21:11:05 · 584 阅读 · 0 评论 -
poj3254 Corn Fields(状压dp)
题目链接:http://poj.org/problem?id=3254题目大意:给m*n的玉米地,里面可以放牧,1的位置可以放牧,0的位置不行。相邻的位置不能放牧。问一共有多少种放牧的方法。范围:n,m思路:状压dp。可以为每一个行记录一个状态dp[i][state],表示在第i行的状态state是否满足。所以在当前的第i行,我们可以通过判断各个状态是否与前原创 2016-03-23 15:18:43 · 514 阅读 · 0 评论 -
poj 1185 炮兵阵地(状压dp)
题目链接:http://poj.org/problem?id=1185题目大意:中文题。范围:N 思路:状压dp。还是将炮兵摆放的地方设1,不放的地方设0。因为他对炮兵的攻击范围做了要求,也就是相邻的炮兵位置不能小于2。那么我们就要先筛选出满足这个硬性条件的状态。然后我们可以发现,对于第i行的状态,与上一行以及上上一行有关。所以考虑设一个三维dp原创 2016-03-23 21:05:46 · 406 阅读 · 0 评论 -
poj 2104 K-th Number(主席树,静态第k小)
题目链接:http://poj.org/problem?id=2104思路:主席树。根据定义,对于序列[1…n]的每一个前缀[1…i](i对于询问操作,因为我们我们求的是第k小,所以利用二分查找。如果在[1,n]的区间里面,可以先看左子树上的数字是否大于等于k,如果是就去左子树,否则就去右子树。那么到[l,r]的区间里面,其实就是T看[r]-T[l-1]的值,然后和k去比较原创 2016-04-26 20:55:52 · 441 阅读 · 0 评论 -
poj2195 Going Home(最大费用最小流)
题目链接:http://poj.org/problem?id=2195求最大流最小费用。主要是加边,先从源点到各个人m,费用为0流量为1,。然后从m到H,费用为距离,流量为1.最后从H到汇点,费用为0,流量为1.代码:#include#include#include#include#include#define inf 0x3f3f3f3f#define原创 2016-07-22 20:12:35 · 345 阅读 · 0 评论 -
poj3261Milk Patterns(后缀数组)
题目链接:http://poj.org/problem?id=3261题目大意:给一个字符串。问这个字符串中可重叠子串出现的次数超过K次的最大子串长度。思路:利用后缀数组height数组性质,我们可以知道相邻子串的公共前缀x,只要x的出现次数大于等于K就可以了。那么我们可以二分长度然后判断是否存在这种情况即可。代码:#include#include#include原创 2016-08-03 21:30:46 · 635 阅读 · 0 评论 -
poj3348Cows(凸包求多边形面积)
题目链接:http://poj.org/problem?id=3348思路:先对点进行排序,然后求出凸包。对凸包上的点进行面积计算,即将多边形面积分成多个三角形,利用叉积计算即可。代码:#include#include#include#include#define PI acos(-1.0)#define eps 0.00000001using namespac原创 2016-08-15 21:27:26 · 833 阅读 · 0 评论 -
poj 3304Segments(直线与线段的相交关系)
题目链接:http://poj.org/problem?id=3304题目大意:给你一些线段,问你能不能找出一条直线,使得这些线段投影到这条直线上至少有一个公共交点。思路:这题转化一下其实就是能不能有一条直线穿过所有的线段。由于N比较小(n代码:#include#include#include#include#define PI acos(-1.0)#de原创 2016-08-15 21:39:55 · 454 阅读 · 0 评论 -
poj1266Cover an Arc.(三角形的外心)
题目链接:http://poj.org/problem?id=1266题目大意:给三个点,求出能够覆盖由这三个点组成的圆弧的最小矩形面积。思路:根据三个点可以组成一个三角形,那么就能算出这个三角形的外心。然后就能判断出是优弧还是劣弧,进行计算。注意他的矩形要求是整数,所以要用ceil和floor进行取整。可能会有精度误差,可以考虑ceil时减去eps,floor时加上e原创 2016-08-17 20:44:11 · 438 阅读 · 0 评论 -
poj 2826 An Easy Problem?!(线段相交、模拟)
题目链接:http://poj.org/problem?id=2826题目大意:给两条线段,然后有雨水落下来,问这两条线段组成的容器里面最多放置水的面积。思路:如果线段不相交,或者有一条线段是与x轴平行的,那么肯定不能容下水。能盛下水的情况就是两线段相交,然后有2个点在交点上方。但是有一种情况是,从y轴往下看的时候,有一条线段完全覆盖住了另一条,这个时候也是没有水进入的。原创 2016-08-21 15:55:55 · 439 阅读 · 0 评论 -
poj 1743 Musical Theme(后缀数组、二分)
题目链接:http://poj.org/problem?id=1743题目大意:求不重叠的最长相同变化的子串,也就是最大长度的不重叠重复子串,输出其长度。思路:可以利用后缀数组中的height数组。height数组的性质:hegiht[i]表示后缀排名i和i-1的最长公共子序列。现在要求不重叠的重复子串,我们可以将height分组,对于hegiht[i]>=p来说,既然已经原创 2016-08-23 16:00:01 · 488 阅读 · 0 评论 -
POJ 2155 Matrix(二维树状数组)
题目链接:http://poj.org/problem?id=2155题目大意:给一个n*n的矩阵,有k个询问。询问分更新和询问操作。更新操作是对某个小的矩阵进行变换,里面的数(0变1,1变0)。#include#includeint c[1005][1005],n;int lowbit(int x){ return x&(-x);}void update(int原创 2016-03-04 21:48:41 · 392 阅读 · 0 评论 -
poj 3320 Jessica's Reading Problem(尺取法)
题目链接:http://poj.org/problem?id=3320题目大意:给一个数列,找一个最小的区间,使得区间里面能够包含原数列中出现的所有数。思路:尺取法。所谓的“尺取法”,就是维护两个指针,指向当前维护的区间的首和尾。维护是贪心的去尽量的缩小区间范围。这道题目就是要保证首指针指向的数只需要出现一次,否则就将首指针向后移动。如果现在区间里面的数小于需要的数原创 2015-12-08 14:34:41 · 420 阅读 · 0 评论 -
poj 2777 Count Color(线段树、状态压缩、位运算)
Count ColorTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 38921 Accepted: 11696DescriptionChosen Problem Solving and Program design as an optional course原创 2015-07-27 11:27:58 · 953 阅读 · 1 评论 -
poj 1141 Brackets Sequence(区间DP记录路径)
题目链接:http://poj.org/problem?id=1141题目大意:给一个不完全匹配的括号序列,问最少需要增加多少个括号能够使括号序列完全匹配,输出完全匹配以后的序列。思路:区间DP。我们设dp[i][j]代表i~j区间里面使得括号完全匹配最少需要增加的括号数。那么如果s[i]和s[j]是匹配的,就有dp[i][j]=dp[i+1][j-1]。然后就在i原创 2015-10-23 20:39:05 · 488 阅读 · 0 评论 -
poj 1651 Multiplication Puzzle(区间DP)
题目链接:http://poj.org/problem?id=1651题目大意:在一串长为n的数字里面,一个个的选数直到只剩下2个数。取数的过程中记录下分数,规定只能在两个数中间取一个数,假设这三个数是a1,a2,a3,那么分数就是a1*a2*a3。现在问怎么选数才能使总得分最低。思路:区间DP。跟矩阵连乘其实是一样的。我设dp[i][j]表示i~j区间里面取数获得原创 2015-10-21 21:04:56 · 360 阅读 · 0 评论 -
poj 2955 Brackets(括号匹配,区间DP)
题目链接:http://poj.org/problem?id=2955题目大意:给一个字符串,求出最大的括号匹配数。这里的最大匹配数可以是不连续的子串。比如([ ),就是2。思路:区间DP。如果设立一个dp[i][j],代表从i到j的括号最大匹配数。那么如果在i和j的地方,s[i]和s[j]能匹配成功,就有dp[i][j]=dp[i+1][j-1]+2。所以我们就可原创 2015-10-16 20:03:00 · 594 阅读 · 0 评论 -
poj 1160 Post Office(邮局问题)
Post OfficeTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 17110 Accepted: 9226DescriptionThere is a straight highway with villages alongside the highway.原创 2015-07-17 16:42:51 · 2010 阅读 · 0 评论 -
poj3461 Oulipo(KMP)
题目链接:http://poj.org/problem?id=3461题目大意:给两个字符串p和s,问p在s中出现了几次。思路:KMP模板题。用KMP算法可以知道p是否在s 中出现,如果要知道出现几次,其实还是模拟匹配过程。如果匹配到一个成功的字符串,就继续看下去,同时j=next[j],相当于在第plen+1的地方字符串失配了,要重新给p定位。代码:#incl原创 2015-11-05 19:36:32 · 429 阅读 · 0 评论 -
poj 3246 Balanced Lineup(线段树)
Balanced LineupTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 38942 Accepted: 18247Case Time Limit: 2000MSDescriptionFor the daily milking, Farme原创 2015-07-23 23:52:35 · 800 阅读 · 0 评论 -
POJ 1961 Period(KMP)
题目链接:http://poj.org/problem?id=1961题目大意:跟前面那题一样,只是这题要求出这个字符串里面所有的能够组成a^n形式的情况。思路:还是应用next数组,对于各种情况可以暴力枚举len,选取符合情况的。代码:#include#include#include#includeusing namespace std;int min(原创 2015-11-06 16:40:25 · 309 阅读 · 0 评论 -
poj 2406 Power Strings(KMP)
题目链接:http://poj.org/problem?id=2406题目大意:给出一个字符串,这个字符串一定能够以a^n表示。现在问n最大为多少。思路:对于这个字符串来说,我可以算出他的next数组,然后能够得到这整个字符串的最大前缀和后缀相同的值next[len]。然后可以发现len-next[len]就是这个a的长度。所以就自己猜了一下= =如果len%(len-ne原创 2015-11-06 15:45:26 · 441 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame(KMP)
题目链接:http://poj.org/problem?id=2752题目大意:给一个字符串,求出他前缀和后缀相同时的他们的长度。思路:还是next数组的应用,先求整个字符串的next数组,然后可以知道next[len],代表着整个字符串的最大相同前缀和后缀长度x。然后看next[x],意思就是前x个字符的最大相同前缀和后缀长度,按照这样的方式一直循环,直到next[x]=原创 2015-11-06 16:02:14 · 429 阅读 · 3 评论