![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
poj
MashiroSky
这个作者很懒,什么都没留下…
展开
-
【poj1113】 Wall
http://poj.org/problem?id=1113 (题目链接)题意:给定多边形城堡的n个顶点,绕城堡外面建一个围墙,围住所有点,并且墙与所有点的距离至少为L,求这个墙最小的长度。Solution 凸包裸题。凸包的构造的话,有一篇博客写得很好,就是看着有点乱,界面太丑了= =。 很容易发现,所求的的墙的最小长度实际上就是平面凸包的周长加上以L为半径的圆的周长。这个圆是怎么来的呢原创 2016-08-08 19:23:41 · 468 阅读 · 0 评论 -
【poj3020】 Antenna Placement
http://poj.org/problem?id=3020 (题目链接)题意:给出一个矩阵,矩阵中只有‘*’和‘o’两种字符,每个‘*’可以向它上下左右四个方位上同为‘*’的点连一条边,求最少需要连多少条边才能使所有‘*’被至少一条边连接。Solution 二分图最小路径覆盖。将每个‘*’拆成两个节点构造一个二分图,然后连边,跑匈牙利就可以了,最后最小路径覆盖的答案就是所有节点的数量-最大匹原创 2016-08-13 15:26:23 · 386 阅读 · 0 评论 -
【poj1201】 Intervals
http://poj.org/problem?id=1201 (题目链接)题意:给出n个区间[ai,bi],要求选出尽可能少的数,使得每个区间i中至少存在c[i]个数。Solution 差分约束。 区间可以表示为sum[bi]-sum[ai-1],所以可以列出n个不等式:sum[bi]-sum[ai-1]>=c[i],然后每个sum[x]满足0<=sum[x+1]-sum[x]<=1,这原创 2016-09-03 22:20:24 · 702 阅读 · 0 评论 -
【poj1804】 Brainman
http://poj.org/problem?id=1804 (题目链接)题意:求逆序对Solution1 归并排序。 每次合并时计算逆序对。 代码:// poj1804#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<cma原创 2016-09-03 17:17:42 · 429 阅读 · 0 评论 -
【poj2342】 Anniversary party
http://poj.org/problem?id=2342 (题目链接)题意:没有上司的舞会。。。Solution 树形dp入门题。 dp[i][1]表示第i个节点的子树当节点i去时的最大值,dp[i][0]表示第i个节点的子树当节点i不去时的最大值。转移很好转,dp[i][0]=max(dp[j][1],dp[j][0]) (j是i的儿子),dp[i][1]=dp[j][0] (j是原创 2016-08-12 16:26:17 · 469 阅读 · 0 评论 -
【poj1745】 Divisibility
http://poj.org/problem?id=1745 (题目链接)题意:给出n串数,可以在其两两之间添加+或-,判断是否存在某种方案使得出的表达式的答案可以整除k。Solution 水题一道,勉强算是dp吧。。 先把每个数都mod k,f[i][j]表示到第i个数是否存在一种方案使得答案能被j整除,转移很显然。复杂度O(nk)。代码:// poj1745#include<alg原创 2016-08-12 16:08:15 · 307 阅读 · 0 评论 -
【poj1067】 取石子游戏
http://poj.org/problem?id=1067 (题目链接)题意:有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。Solution 裸原创 2016-08-12 14:51:34 · 351 阅读 · 0 评论 -
【poj1088】 滑雪
http://poj.org/problem?id=1088 (题目链接)题意:给出一个矩阵,任意选择一个起点,每次只能向周围4个格子中的值比当前格子小的格子移动,求最多能移动多少步。Solution 其实很简单,将矩阵中的值进行排序,从小到大更新。比如说当前点(i,j),它只能由周围4个点走到,所以取最大值,而排序就保证了更新的顺序不会出错。代码:// poj1088#include<al原创 2016-08-12 15:35:28 · 307 阅读 · 0 评论 -
【poj1080】 Human Gene Functions
http://poj.org/problem?id=1080 (题目链接)题意:给出两个只包含字母ACGT的字符串s1、s2,可以在两个字符串中插入字符“-”,使得s1与s2的相似度最大。Solution 动态规划。 用f[i][j]表示字符串s1前i位和s2前j位的最大相似度,转移很简单,直接看程序吧,边界条件要注意,当i=0或j=0时,就等于是在长度等于0的字符串中全部插入“-”,使原创 2016-08-12 15:28:57 · 488 阅读 · 0 评论 -
【poj1050】 To the Max
http://poj.org/problem?id=1050 (题目链接)题意:求二维最大子矩阵Solution 数据好像很水,N最大才100,N^4大暴力都可以随便水过。 其实有N^3的做法。枚举矩阵上下边界,然后把中间的一大坨看作是一维的一条直线,O(n)的做最长子段和即可。当然记得要预处理出前缀和。代码:// poj1050#include<algorithm>#include原创 2016-08-12 15:08:05 · 312 阅读 · 0 评论 -
【poj1006】 Biorhythms
http://poj.org/problem?id=1002 (题目链接)题意:给出n个字符串,每个字符串表示一个电话号码,求重复的电话号码以及重复了几次,按照字典序输出。Solution poj的水题都是坑逼题,这道题我又调了一个上午,细节实在是太多了。。具体做法倒是很简单,map水过。代码:// poj1002#include<algorithm>#include<iostream>原创 2016-08-22 16:11:45 · 404 阅读 · 0 评论 -
【poj1012】 Joseph
http://poj.org/problem?id=1012 (题目链接)半年前的考试题。。任然清晰的记得那次差10分就AK。。。题意:约瑟夫环,有前k个好人,后k个坏人,要求使得后k个坏人先死的最小m。Solution 很水的约瑟夫问题。。半年前还是暴力模拟+打表。。醉了。 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(n原创 2016-08-23 21:11:42 · 301 阅读 · 0 评论 -
【poj1010】 STAMPS
http://poj.org/problem?id=1010 (题目链接)感到了英语深深的恶意。。。题意(真的很难懂。。。。):第一行数字是邮票的面值,每一个数字就是一个不同的种类,哪怕面值相同。以0结束。第二行数字是顾客所需要的邮票总面值。每个数字就是一个顾客的需求,以0结束。每两行是一组case。顾客是集邮爱好者,所以你必须尽可能的给他不同种类的邮票。但是一位顾客最多只能拿4张邮票。显然,我们拥原创 2016-08-23 20:24:57 · 371 阅读 · 0 评论 -
【poj1274】 The Perfect Stall
http://poj.org/problem?id=1274 (题目链接)题意:懒得写了Solution 二分图匹配裸题。注意清空数组。代码:// poj3020#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<cmath>#define原创 2016-08-13 15:59:38 · 333 阅读 · 0 评论 -
【poj1740】 A New Stone Game
http://poj.org/problem?id=1740 (题目链接)男人八题之一题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆。最后谁无子可取即输。Solution 首先我们考虑两堆相等的情况,一定是谁取谁输,因为对方永远可以做对称的操作。对于四堆,1、2堆相等,3、4堆相等的情况,一定也是原创 2016-08-03 22:20:02 · 310 阅读 · 0 评论 -
【poj2234】 Matches Game
http://poj.org/problem?id=2234 (题目链接)题意:经典取火柴游戏Solution 博弈水题。 已知结论直接搞。 当a1^a2^……^an=0时,必败。 反之必胜。 刚开始我还不理解,不是说要子游戏的SG值异或和等于0才是必败吗,后来发现原来它的子游戏x的SG就是它自己x。。代码:// poj2960#include<algorithm>原创 2016-08-03 22:00:19 · 330 阅读 · 0 评论 -
【poj1079】 Triangle
http://poj.org/problem?id=2079 (题目链接)题意:求凸包内最大三角形面积Solution 旋转卡壳。 只会n²的做法,但是竟然过了。就是枚举每一个点,然后旋转卡壳另外两个点。先固定i,j这2个邻接的顶点。然后找出使三角形面积最大的那个k点。然后再固定i,枚举j点,由于k点是随着j点的变化在变化,所以k点不必从开头重新枚举。 之后去网上看了下O(n)的做原创 2016-08-12 08:34:10 · 381 阅读 · 0 评论 -
【poj3233】 Matrix Power Series
http://poj.org/problem?id=3233 (题目链接)题意:给出一个n×n的矩阵A,求模m下A+A2+A3+…+AkA + A^2 + A^3+ … +A^k 的值Solution 今日考试就A了这一道题。。 当k为偶数时,原式=(Ak2+1)×(A1+A2+...+Ak2)(A^\frac{k}2+1)×(A^1+A^2+...+A^\frac{k}2) 当k原创 2016-09-24 17:12:21 · 460 阅读 · 0 评论 -
【poj1090】 Chain
http://poj.org/problem?id=1090 (题目链接)题意:给出九连环的初始状态,要求将环全部取下需要走多少步。Solution 格雷码:神犇博客 当然递推也可以做。 代码:// poj1090#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#includ转载 2016-09-21 15:29:44 · 588 阅读 · 0 评论 -
【poj2983】 Is the Information Reliable?
http://poj.org/problem?id=2983 (题目链接)一个SB错误TLE了半个小时。。。题意:一条直线上有n个点,给出m条信息,若为P则表示点A在点B的北方X米,若为V则表示A在B的北方。判断给出的信息是否合法。Solution 对于P,A-B=X等价于是A-B>=X && A-B<=X(B-A>=-X)。 对于V,A-B>=1。 所以我们就可以利用差分约束去求原创 2016-09-08 16:49:12 · 340 阅读 · 0 评论 -
【poj3159】 Candies
http://poj.org/problem?id=3159 (题目链接)题意:有n个小朋友,班长要给每个小朋友发糖果。m种限制条件,小朋友A不允许小朋友B比自己多C个糖果。问第1个小朋友最多比第n个小朋友多多少糖果。Solution 原来这就是所谓的差分约束。。浅显易懂的博客,超详细的博客。选哪种呢?代码:// poj3159#include<algorithm>#include<ios原创 2016-09-03 19:46:59 · 420 阅读 · 0 评论 -
【poj1716】 Integer Intervals
http://poj.org/problem?id=1716 (题目链接)题意:给出n个区间,要求取出最少数量的不同的自然数,使每个区间中至少包含2个取出的数。Solution 差分约束。 运用前缀和,将问题转化为了一些不等式,然后建图连边跑SPFA最长路(因为是>=)即可,因为有负权所以用不了dijistra。就是poj1201的简化版。代码:// poj1716#include<a原创 2016-09-08 14:29:26 · 382 阅读 · 0 评论 -
【poj3070】 Fibonacci
http://poj.org/problem?id=3070 (题目链接)题意:用矩阵乘法求fibonacci数列的第n项。Solution 矩乘入门题啊,题目把题解已经说的很清楚里= =。 矩乘其实很简单,通过自己YY或者是搜索对于一个递推公式求出它所对应的矩阵,然后套个快速幂就可以迅速求解第n项。代码:// poj3070#include<algorithm>#include<i原创 2016-09-24 14:23:06 · 424 阅读 · 0 评论 -
【poj2773】 Happy 2006
http://poj.org/problem?id=2773 (题目链接)题意:给出两个数m,k,要求求出从1开始与m互质的第k个数。Solution 数据范围很大,直接模拟显然是不行的,我们需要用到一些奇奇怪怪的方法。 考虑是否可以通过某些途径快速得到解,然而并没有头绪。正难则反,能不能通过计算不与m互质的数的个数来得到互质的数的个数呢?答案是可行的,我们可以运用容斥。 二分一个原创 2016-09-20 21:59:31 · 986 阅读 · 0 评论 -
【poj2891】 Strange Way to Express Integers
poj.org/problem?id=2891 (题目链接)题意:求解线性同余方程组,不保证模数一定两两互质。Solotion 用exgcd将俩个同余方程合并成一个 如合并n%M=R,n%m=r 即M*x+R=m*y+r M*x-m*y=r-R 设a=M/t,b=m/t,c=(r-R)/t,t=gcd(a原创 2016-09-16 22:56:59 · 455 阅读 · 0 评论 -
【poj3537】 Crosses ans Crosses
poj.org/problem?id=3537 (题目链接)题意:给出一个1*n的棋盘,每次可以选择一个没被标记过的点打标记,若经过某一步操作使得出现3个连续的标记,则最后操作的人获胜。问是否存在先手必胜策略。Solution 我们可以很快发现,若给x位置打上标记,那么棋盘就被分成了2份,分别是x-3以及n-x-2,于是sg[n]=mex{sg[x-3]^sg[n-x-2]},1<=x<=n。原创 2016-09-18 22:51:17 · 374 阅读 · 0 评论 -
【poj2226】 Muddy Fields
http://poj.org/problem?id=2226 (题目链接)题意:给出一个只包含‘.’和‘*’的矩阵,用任意长度的宽为1的木板覆盖所有的‘*’而不覆盖‘.’,木板必须跟矩形的长或宽平行。问最少需要多少块木板。Solution 这道题的构图非常巧妙,堪称经典构图。对于每一个‘*’,要么就是被横的木板覆盖,要么就是被竖的木板覆盖,而木板的长度一定都是取到最长(因为题目没有说木板不能重原创 2016-08-14 20:54:15 · 455 阅读 · 0 评论 -
【poj2724】 Purifying Machine
http://poj.org/problem?id=2724 (题目链接)题意:Mike有一个机器可以帮助他清理奶酪,每个奶酪由一个n位二进制数表示,机器上一共有n个按钮,每个按钮有1,0,*,其中‘*’表示既可以是1也可以是0。每次操作都可以命令机器生成一个二进制数。因此机器可以表示出一个或两个二进制数,这样就可以清理奶酪了。现在问要清理m块n位的二进制奶酪需要操作多少次。Solution原创 2016-08-14 16:54:58 · 482 阅读 · 0 评论 -
【poj1009】 Edge Detection
http://poj.org/problem?id=1009 (题目链接)不得不说,poj上的水题还是质量非常高的= =,竟然让本大爷写了一下午。转自:http://blog.sina.com.cn/s/blog_6e63f59e01012mxb.html题意:给出一个矩阵,有一种简单的算法:将矩阵中的每一个点的值与他周围的八个点相减,然后将当前点更新为绝对值最大的。求转换后的矩阵,输入的矩阵是以原创 2016-08-23 17:06:25 · 498 阅读 · 0 评论 -
【poj3608】 Bridge Across Islands
http://poj.org/problem?id=3608 (题目链接)题意:求两凸包间最短距离Solution 旋转卡壳。 先分别选出两凸包最上点和最下点,从这两点开始向逆时针方向旋转卡壳。用叉乘判断是否旋转旋转,具体操作跟求凸包直径差不多。代码:// poj3608#include<algorithm>#include<iostream>#include<cstring>#原创 2016-08-11 16:09:22 · 708 阅读 · 0 评论 -
【poj2187】 Beauty Contest
http://poj.org/problem?id=2187 (题目链接)题意:求点集上两点间最长距离Solution 凸包+旋转卡壳。 旋转卡壳是看起来很难,但是很好实现也很好理解的算法,有篇博客写得很好,代码也很美观,在下也就不再赘述了。代码:// poj2187#include<algorithm>#include<iostream>#include<cstring>#in原创 2016-08-10 19:32:37 · 341 阅读 · 0 评论 -
【poj1186】 方程的解数
http://poj.org/problem?id=1186 (题目链接)题意:已知一个n元高次方程: 其中:x1, x2,…,xn是未知数,k1,k2,…,kn是系数,p1,p2,…pn是指数。且方程中的所有数均为整数。 假设未知数1 <= xi <= M, i=1,,,n,求这个方程的整数解的个数。 solution meet in the middle。移项,分两部分搜索,has原创 2016-07-15 17:19:42 · 668 阅读 · 0 评论 -
【poj2741】 Colored Cubes
http://poj.org/problem?id=2741 (题目链接)这也是道神题。。题意:给出n个骰子,每一面都有一种颜色,问最少更改多少个面的颜色可以使所有骰子通过旋转后完全相同。solution 设6个面的编号为1~6,从中选一个作为顶面,再选一个作为正面,那么其它面都可以确定(因为有对面的面也确定了),因此每个骰子有6*4=24种姿态,每种姿态对应一个全排列P,P[i]表示i所在的位置原创 2016-07-15 19:25:36 · 580 阅读 · 0 评论 -
【poj3141】 Distant Galaxy
http://poj.org/problem?id=3141 (题目链接)题意:给出平面上n个点,找出一个矩形,使边界上包含尽量多的点。solution 不难发现,除非所有输入点都在同一行或同一列上,最优矩形的4条边上都至少有一个点。这样的话,我们可以枚举四条边穿过的点,然后统计点数。 考虑部分枚举,只枚举矩形上下界,用其它方法确定左右界。 设一条竖线i,用left[i]表示竖线左边位于上下界原创 2016-07-15 20:14:37 · 522 阅读 · 0 评论 -
【poj1655】Balancing Act
http://poj.org/problem?id=1655 (题目链接)题意:给出一棵树,求树上一点使得使得删除一点后该树的最大子树最小。solution 树的重心裸题。 随意取一点作为根节点,dfs维护当前节点的最大子树大小以及它的父亲子树大小,更新答案。代码:// poj1655#include<algorithm>#include<iostream>#include<cstdlib原创 2016-07-16 20:39:58 · 332 阅读 · 0 评论 -
【poj1741】 Tree
http://poj.org/problem?id=1741 (题目链接)树上分治第一题。题意:给出一个n个节点的带权树,求树上距离不超过K的所有点对的个数。solution 点分治裸题。所谓的点分治,就是对于一条路径,只有经过该点和不经过改点两种情况,所以我们可以通过找到树的重心,删去这个点,使树分成几棵小树,再递归处理。不经过的情况很好处理,直接递归到子树就可以了,关键是对于经过的情况。 对原创 2016-07-18 15:32:10 · 301 阅读 · 0 评论 -
【poj3237】 Tree
[http://poj.org/problem?id=3237] (题目链接)树链剖分处女题(当然也是模板题),然而这150+行的程序我调了一天,历经艰辛,终于ac。。题意:给出一个n个节点的带权树,要求维护操作:1.求出树上两点之间的边权的最大值;2.更改一条边上的权值;3.将树上两点之间的所有边权取各自的相反数。solution 神奇的树链剖分+线段树维护查询和修改操作。 树链剖分时,我们将原创 2016-07-14 21:59:47 · 434 阅读 · 0 评论 -
【poj2761】 Feed the dogs
http://poj.org/problem?id=2761 (题目链接)题意:求区间第K大。Solution 和poj2104一模一样。主席树代码:// poj2761#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<cmath>#def原创 2016-08-01 14:31:15 · 309 阅读 · 0 评论 -
【poj2774】 Long Long Message
poj2774[http://poj.org/problem?id=2774] (题目链接)第一次用后缀数组,感觉有点神。。。才发现原来sa[0]是没用的。。solution 将两个字符串合并为一个,并用分隔符隔开。之后跑后缀数组,求出height[],for一遍,找到在分隔符两侧的height值最大的便是答案。代码// poj2774#include<algorithm>#i原创 2016-07-12 15:57:29 · 368 阅读 · 0 评论 -
【poj2960】 S-Nim
http://poj.org/problem?id=2960 (题目链接)题意:经典Nim游戏,只是给出了一个集合S,每次只能取S[i]个石子。Solution g(x)=mex{SG(x-s[1]),SG(x-s[2])……} 数据范围很小,可以暴力求SG,顺便记忆化一下。不知道为什么用map就TLE了。。。只好开数组了。代码:// poj2960#include<algorithm原创 2016-08-03 21:48:48 · 405 阅读 · 0 评论