POJ
文章平均质量分 82
ACM_devil
这个作者很懒,什么都没留下…
展开
-
POJ1125-Floyd
题目:题目链接题意:其实就是给n个点,m条边,每条边有个权值,然后求之中的一个点,到每个点的距离的最短的消耗分析:暴力的Floyd,直接把每一个点和每一个点相连,最后对于每一个点求最长的消耗。然后总体再求最小的消耗代码:#include #include #include #include #include #include #include原创 2013-09-29 20:44:15 · 688 阅读 · 0 评论 -
POJ2503-map
题目: 题目链接 题目:就是给你一个字典有一个单词对应一个外语单词。然后给你外语让你翻译成对应的英语 分析:这个换行搞的太纠结了.... 代码: #include #include #include #include #include #include #include #include #include #include #include #原创 2013-09-04 17:11:27 · 779 阅读 · 0 评论 -
POJ2643-map
题目:题目链接 题意:就是说现在有n个人竞选,每个人属于不同的党派。而下面有m张选票,每张选票对应一位竞选者,问最后获得竞选的人是属于那个党派的。 分析:由于都是string型的,我们使用一个map来映射党派和人名,在用一个mao 来映射名字和选票数,不过WA了一次,是因为没有注意到所有人的选票都一样也应该输出tie。这点没有考虑到,改了之后就A了: 代码: #原创 2013-09-04 16:34:07 · 713 阅读 · 0 评论 -
POJ2451-半平面交
题目: 题目链接 题目:就是给出N个半平面,求这N个半平面交 分析:O(n^2),初始化坐标系(0,10000)*(0,10000)。然后对每一个半平面cut一次。最后求一次面积即可: 代码: #include #include #include #include #include #include #include #include #includ原创 2013-09-07 16:38:24 · 844 阅读 · 0 评论 -
POJ2187-最远点对
题目:题目链接 题意:题目的意思就是说给你N个点,然后让你求出最远的两个点的距离的平方(注意:是平方); 分析:对于50000个点暴力肯定是不行的,那么我们可以联系到凸包,因为最远的点肯定是在凸包上,那么要求最远的距离,我们就可以先对这些点求一次凸包(复习凸包的写法)。然后对于凸包上面的点可以枚举,因为这时候要枚举的点的数目已经减少很多了,这时候,就是普通的暴搞了。主要是前原创 2013-09-07 20:37:53 · 1368 阅读 · 2 评论 -
POJ2420(求多边形费马点)
题目:题目链接 题意:题目的意思就是给你N个点,在平面上寻找一个点,使得这个点到其他点的距离之和最小,问你最小的距离是多少? 分析:在三角形内部这个点叫做费马点(费马点定义)。那么这道题目就是求一个多变形的费马点。这样的话,我们可以像搜索那样,先定义一个起点,然后以这个点为基点分别向上、向下、向左、向右移动,只要使得距离之和变小的移动都是有效的移动。那么我们可以从第一点原创 2013-09-07 19:44:17 · 3576 阅读 · 0 评论 -
POJ1755-半平面交判断不等式是否有解
题目:题目链接 题意:就是给你铁人三项,每个人在某一项中有确定的速度,裁判可以决定某一项比赛的路程为多少,问对于某个人,是否存在一种安排能使他拿到第一,而且不能是并列。 分析:假设每一段路程的长度分别为x, y, z,那么对于一个选手的时间就是x/u1+y/v1+z/w1;如果一个人要胜过另外一个人那么必须满足方程式x/u1 + y/v1 + z/w1 < x/u2 + y/v原创 2013-09-06 14:59:51 · 1185 阅读 · 0 评论 -
POJ3525(二分+半平面交)
题目:题目链接 题目:就是给你一个多边形,让你判断这个多边形的最大内切圆 分析:二分半径r,把每条边向内收缩r,半平面交判可行 半平面交还是太弱: 代码: #include #include #include #include #include #include #include #include #include #include #i原创 2013-09-06 10:29:29 · 877 阅读 · 0 评论 -
寻找丑数
定义: 把只包含质因子2、3和5的数称作丑数(Ugly Number),例如:2,3,4,5,6,8,9,10,12,15,等,习惯上我们把1当做是第一个丑数。写一个高效算法,返回第n个丑数。最普通(也最耗时)的做法是从1开始遍历,然后判断这个数的因式分解中只包含2,3,5,满足则找到了一个,一直找下去,直到第n个被找出!分析:假设数组ugly[N]中存放不断产原创 2013-08-30 16:33:33 · 1912 阅读 · 0 评论 -
POJ2931-不平等博弈
题目:题目链接 论文题目:方展鹏-《浅谈如何解决不平等博弈问题》 用到了surreal number,看不太懂,路过大神求解释: #include #include #include #include #include #include #include #include #include #include #include #include #in原创 2013-08-30 16:02:14 · 1648 阅读 · 0 评论 -
POJ2540-半平面交求线性规划可行区域的面积
题目:题目链接 题意:就是每次给出一个坐标,然后相对于上一个坐标这个点到宝藏的 距离是靠近(hotter)还是远离(colder),还是不变(same); 分析:这样的话,等于每次走一次就确定一个半平面区域,也就是从这个点到另一个点的中垂线然后分割成的半平面,求可能存在的面积。改了一下午,怎么都不对,改来改去,煞笔了,模版的一个小地方敲错了。 代码: #原创 2013-09-06 16:24:17 · 932 阅读 · 0 评论 -
POJ3555//POJ3130//POJ1474-求解多边形内核
题目:题目链接 题意:就是判断一个多边形是不是有核,(多边形内核); 分析:就是每次枚举一条线段,用这条线段去切割原来的多边形,判断最后剩余的点数。如果没有了的话,那么就没有核的存在了,反之则有 代码: #include #include #include #include #include #include #include #include #i原创 2013-09-05 16:48:07 · 828 阅读 · 0 评论 -
POJ2545-丑数
题目:题目链接 题意:就是按照丑数的定义,给定三个素数,然后以这三个数字为因子求地num个丑数: 丑数求法介绍:http://blog.csdn.net/acm_zl/article/details/10613073 #include #include #include #include #include #include #include #include原创 2013-08-30 16:53:42 · 1153 阅读 · 0 评论 -
POJ3461-串匹配-经典的KMP
题目:题目链接 题意:就是给出母串,求出字串在母串中出现的位置; 经典的KMP算法: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-08-31 11:29:35 · 712 阅读 · 0 评论 -
POJ1696-凸包
题目:题目链接 题意:找逆时针螺旋线最多能连几个点 分析:贪心使用一些几何上的极角排序,凸包的应用,每次都连最外面的点即可。每次找到一个当前点curp,除了第一次是对数组按纵坐标排序得出外,剩下的均按极角排序。使用一个ans数组记录链接的每一个点: 代码: #include #include #include #include #include #原创 2013-09-05 15:23:25 · 778 阅读 · 0 评论 -
POJ1279-求解多边形内核面积
题目:题目链接 题意:题目意思就是给你一个多边形,然后让你求出内核的面积。 分析:还是求内核的问题,先按照求内核的方法求出点,然后又是一个多边形求面积。对于顺时针还是逆时针,最后的面积判个绝对值就可以了: 代码: #include #include #include #include #include #include #include #incl原创 2013-09-05 21:02:35 · 804 阅读 · 0 评论 -
POJ1195-二维数组
题目:题目链接 题意:实现操作:1.add(x,y,a).对二维数组的第x行,第y列加上a.2.sum(l,b,r,t).求所有满足l 分析:见证了二维树状数组,这应该算是很水很水的二维树状数组了吧。表示数据结构强大 代码:#include #include #include #include #include #include #include原创 2013-09-29 22:00:46 · 792 阅读 · 0 评论 -
POJ1050-最大子矩阵和
题目:题目链接 题意:给出n*n的矩阵,求和最大的子矩阵。 分析:首先考虑一维的最大子段和问题,给出一个序列a[0],a[1],a[2]...a[n],求出连续的一段,使其总和最大。a[i]表示第i个元素dp[i]表示以a[i]结尾的最大子段和dp[i] = max{a[i], dp[i-1] + a[i]}考虑二维的最大子矩阵问题我们可以利用矩阵压缩把二维的问题转化为原创 2013-09-29 19:35:21 · 962 阅读 · 0 评论 -
POJ3608-旋转卡壳
题目:题目链接 题意:给出两个多边形,求这两个多边形的最近距离 分析:旋转卡壳 学习旋转卡壳:如果多边形相交, 那么最小距离就变得没有意义了。 然而, 这个问题的另一个版本, 凸多边形顶点对间最小距离对于相交和非相交的情况都有解存在。回到我们的主问题: 直观的, 确定最小距离的点不可能包含在多边形的内部。与最大距离问题相似, 我们有如下结论:两个凸原创 2013-09-27 22:17:33 · 1367 阅读 · 0 评论 -
POJ3714-最近点对
题目:题目链接 题意:求一群点当中的最近的两个点 分析:分治法,直接把点分成两部分,分别计算最近点对,在合并,模版 代码:#include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-09-27 21:29:35 · 2291 阅读 · 0 评论 -
POJ3468树状数组
题目:题目链接 题意: The first line contains two numbers N and Q. 1 ≤ N,Q ≤ 100000. The second line contains N numbers, the initial values of A1, A2, ... , AN. -1000000000 ≤ Ai ≤ 1000000000. Ea原创 2013-09-23 22:44:03 · 779 阅读 · 0 评论 -
POJ3304-线段与直线相交
题目:题目链接题意:就是给你N条线段。问你是不是存在这样一条线段,使得所有的点都和这些线段相交分析:存在一条直线穿过所有的线段。那么我们找任意两个端点,然后判断这两个端点构成的线段是不是和所有的直线相交。如果找到一条就直接return true即可:代码:#include #include #include #include #include原创 2013-10-04 19:34:12 · 677 阅读 · 0 评论 -
POJ1308-并查集
题目:题目链接 题意:给出你每对点的链接情况,问你最后构成的是不是一棵树 分析:并查集,判断是不是有多个根即可(按照树 的定义,只有一个根。每个子节点只能有一个父节点)。对了,没有节点也算树,就是说空树也算: 代码:#include #include #include #include #include #include #include #inclu原创 2013-10-03 21:39:58 · 771 阅读 · 0 评论 -
POJ1274-二分匹配
题目:题目链接 题意:给你N头牛,在给出每头牛愿意产奶的产房号,问你最后有多少头奶牛可以顺利产奶 分析:二分图的最大匹配,对于每一头牛对号入座匹配。牛和房连号,求最大匹配 代码:#include #include #include #include #include #include #include #include #include #includ原创 2013-10-03 20:25:46 · 726 阅读 · 0 评论 -
POJ1287-最小生成树
题目:题目链接 题意:给你一个图,然后求最小花费的图使得所有的点都有被连到 分析:最小生成树,需要注意的是这里的边是更新的,每次都需要判断一下是不是边的权值被更新了。Prime竟然不超时。 代码:#include #include #include #include #include #include #include #include #include原创 2013-10-03 20:55:32 · 853 阅读 · 0 评论 -
POJ2481树状数组
题目:题目链接 题目:就是按照题目的判断条件,判断对于每一cow,有多少个cow比它stronger。 分析:100000头cow,如果直接for必须超,又是要用到树状数组来节省时间。按照每一个COW的左右坐标排序,这样就可以比较了,后面的比较就可以参照前面的比较结果。这样一步一步的比较非常节省时间: 代码:#include #include #include原创 2013-09-18 15:45:50 · 696 阅读 · 0 评论 -
POJ2352树状数组
题目:题目链接 题意:就是给出你N个星星的坐标,按照题目给出的规则计算不同等级的星星各自有多少个? 分析:我们每次得到一个星星的坐标之后就需要更新和这个星星相关的星星的等级,15000个星星,那么避免超时,就需要使用树状数组。每次把当前星星的X坐标之后的数量加1即可add((x+1), 1);,最后输出统计数目: 代码:#include #include #in原创 2013-09-18 14:05:12 · 681 阅读 · 0 评论 -
POJ3067树状数组
题目:题目链接 题意:有两排城市,这两排之间有一些城市之间有连接的道路,给出所有道路,问有多少道路是相交的。 分析:求逆序数。我们先把所有的道路按照a升序,a相同时b升序的方法排列。这样从头至尾便利,对于每条道路,我们只需要知道它之前有多少道路的b大于它的b就可以了,所以我们只要知道前面有多少b小于等于它的再用下标减去就可以了。而这个求有多少小于等于的过程就用树状数组来原创 2013-09-14 21:17:29 · 756 阅读 · 0 评论 -
POJ1160-典型DP
题目:题目链接 题意:用数轴描述一条高速公路,有V个村庄,每一个村庄坐落在数轴的某个点上,需要选择P个村庄在其中建立邮局,要求每个村庄到最近邮局的距离和最小。 分析:典型的DP:1、考虑在V个村庄中只建立一个邮局的情况,显然可以知道,将邮局建立在中间的那个村庄即可。也就是在a到b间建立一个邮局,若使消耗最小,则应该将邮局建立在(a+b)/2这个村庄上。2、下面考虑建原创 2013-09-29 21:20:33 · 969 阅读 · 1 评论 -
POJ1102-模拟
题目:题目链接 题意:给出一个数字,按照要求的宽度大小输出LD式的数字表示 分析:模拟,把n是1的情况先一个数字一个数字搞出来。然后再根据n放大 代码: #include #include #include #include #include #include #include #include #include #include #includ原创 2013-09-29 22:40:13 · 790 阅读 · 0 评论 -
POJ2524-并查集
题目:题目链接 题意:就是给出你N个人的关系,然后问你这些人最多属于多少个团体 分析:就是裸的并查集,可是我用vector搞了快两个小时了,RE,不知道了,不熟悉STL。下面是我当时写的vector的,求指教: #include #include #include #include #include #include #include #include #i原创 2013-08-30 19:47:19 · 566 阅读 · 0 评论 -
POJ3974-Manacher算法--O(n)回文子串算法
题目:题目链接题目意思:题意应该很好理解,就是求一个字符串中,最长的回文字串的长度是多少?字符串长度 1000000 。暴力T。看了神牛的代码,知道了这个Manacher算法--O(n)回文子串算法 :介绍:算法大致过程是这样。先在每两个相邻字符中间插入一个分隔符,当然这个分隔符要在原串中没有出现过。一般可以用‘#’分隔。这样就非常巧妙的将奇数长度回文串与偶数长度回文串统一起来考虑了(原创 2013-08-17 21:01:56 · 964 阅读 · 1 评论 -
POJ2181(DP)
题目:题目链接 题目意思:从一列数字中按照编号从小到大有选择的取数,若取到的数字的为第奇数个则加上该数,否则减去该数,问取到的数的最大总和。解题方法:动态规划:dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + num[i])表示当前是第奇数个;dp[i][1] = max(dp[i - 1][1], dp[i - 1][原创 2013-08-17 11:03:32 · 807 阅读 · 0 评论 -
POJ 2653(线段相交)
题目:题目链接题目的意思就是说,给你n个线段,把这些线段随机丢到坐标平面上,问你最后在最上面的线段有哪些?就是一个判断线段相交的问题分析:我们可以拿一条线段,然后枚举后面的线段,如果有一条线段和当前的线段相交,就直接break掉,如果后面的线段都没有和其相交的话,就把其编号保存下来,最后输出编号就OK了,代码:#include #include #include #inclu原创 2013-07-26 10:13:58 · 915 阅读 · 0 评论 -
POJ 1269直线相交
题目:题目链接题目意思:就是给你两条直线的上的两点的坐标,让你判断这两条直线是不是相交,不相交的话判断是不是平行或者是不是重合。原创 2013-07-25 19:44:56 · 1085 阅读 · 0 评论 -
POJ 2398(同POJ2318)
题目:题目链接题目意思同2318,只不过加了线段排序。再者输出每一种数量有几个格子就OK:代码:#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;cons原创 2013-07-25 10:16:09 · 747 阅读 · 0 评论 -
POJ2318(计算几何)
题目:题目链接题目的意思就是说给你一个方格子,里面用n条线隔开了。现在给你n个玩具的坐标,这些玩具肯定在方格里面,让你求每一个方格里面有多少个玩具。叉积+二分搜索。由于点必定在格子中,因此,用目标点和格子边上的四个点进行叉积运算,点在格子的“左边”的右边且在格子的“右边”的左边时,即在该格子中,否则,根据叉积结果二分搜索。代码:#include #include #incl原创 2013-07-25 09:56:30 · 848 阅读 · 0 评论 -
POJ1704nim博弈变形
题目:题目链接题目的意思是说:原创 2013-07-24 16:41:51 · 1761 阅读 · 0 评论 -
POJ2425(树形,无向无环图博弈)
题目:题目链接这道题目的意思是说两人挪棋子,棋子放在棋盘上,一个人挪动的时候可以移动到链接到的下一个点。当一个人不能挪动棋子的时候就输了。问先手是赢还是输?如果光看一个石子的话,这就是sg函数的定义。然后对整个图处理一下每个点的sg值。对这M个点怎么处理,这么想吧。假设其中一个点为i,其sg值为sg[i] = a (a != 0)那可以发现,i可以走向[0, a-1]的任意sg值,这相原创 2013-07-24 11:24:50 · 2342 阅读 · 1 评论 -
POJ2975(nim输出走法总数)
题目:题目链接题目的意思就是普通的nim博弈,不同的是要你求出先手在胜利的时候第一步可以移动的方法数,如果输了直接输出0;分析:因为答案最多只有n,令ans=a1^a2^…^an,如果需要构造出异或值为0的数,而且由于只能操作一堆石子,所以对于某堆石子ai,现在对于ans^ai,就是除了ai以外其他的石子的异或值,如果ans^ai代码:#include #include原创 2013-07-23 22:37:03 · 1115 阅读 · 0 评论