POJ
DS-K
这个作者很懒,什么都没留下…
展开
-
POJ 1201 Intervals
题目链接:http://poj.org/problem?id=1201题意:构造一个集合,使得集合内的数字满足所给的n个条件,每个条件给出一个区间[L,R]和k,要求在此区间内至少存在k个数。所有的数都是非负数。思路:设Si为区间[0,i-1]内至少存在数的个数。对于区间[L,R],即Sr+1 - Sl >= k 转化为约束条件,同时对于任意[i,i+1]有0原创 2016-09-06 23:46:37 · 243 阅读 · 0 评论 -
POJ 1021 Joseph
题目链接:http://poj.org/problem?id=1012题意:有2*k个人围城一个圈,前k个是好人,后k个是坏人,现在从第一个开始报数,报到m的出去。求最小的m使得所有的坏人先出去。k思路:约瑟夫环问题,我们可以暴力枚举m,对于每一个m来检查是不是满足情况。先固定了m之后,那么可以看看前k个人是不是在出去k个人之后还留下。只要找到出去一个人后,当前人的编号变化原创 2016-05-05 20:37:46 · 348 阅读 · 0 评论 -
POJ 2184 Cow Exhibition
题目链接: http://poj.org/problem?id=2184题意:有n个奶牛,每个奶牛有一个f值和s值,现在要选取若干个奶牛,它们的f值之和为TF,s值之和为TS。要求在TF和TS都大于等于0的条件下,使得TF+TS最大。s,f∈[-1000,1000],n思路:用dp[i]表示,奶牛的f之和为i时,TS的最大值。因为TF范围是-10W~10W,我们将数据偏移一下,原创 2016-04-21 09:43:19 · 235 阅读 · 0 评论 -
POJ 3420 Quad Tiling
题目链接:http://poj.org/problem?id=3420题意:用1×2的砖铺满4×n的矩形,问一共有多少种铺法。思路:状态压缩DP, 只有两种铺法,横着铺和竖着铺。我们按行dp,那么就要把每一行的状态表示出来。对于横着铺,可以用两个相邻的1来表示;对于竖着放,我们将上面那行的位置记0,下面那行的位置记1,也就是竖着的0 1表示。先确定第一行的状态(按照状态规定,第原创 2016-04-20 20:12:48 · 285 阅读 · 0 评论 -
POJ 2686 Traveling by Stagecoach
题目链接:http://poj.org/problem?id=2686题意:有m个城市互相连接,每一条道路有一个距离。现在有n张车票,每张车票上都记有马的匹数且只能用一次,从一个城市移动到另一个城市所需的时间等于城市之间道路的长度除以马的数量的结果,求从城市a到城市b的最短时间。思路:状态压缩DP,因为车票只能用一次,所以我们记录车票使用情况的状态,以及当前所在的城市编号进原创 2016-04-20 20:02:53 · 269 阅读 · 0 评论 -
POJ 2663 Tri Tiling
题目链接:http://poj.org/problem?id=2663题意:用1×2的砖铺满3×n的矩形,问一共有多少种铺法。思路:状态压缩DP, 只有两种铺法,横着铺和竖着铺。我们按行dp,那么就要把每一行的状态表示出来。对于横着铺,可以用两个相邻的1来表示;对于竖着放,我们将上面那行的位置记0,下面那行的位置记1,也就是竖着的0 1表示。先确定第一行的状态(按照状态规定,第原创 2016-04-20 19:39:13 · 265 阅读 · 0 评论 -
POJ 2441 Arrange the Bulls
题目链接:http://poj.org/problem?id=2441题意:有n个奶牛,m个牛棚(编号1~m),每只奶牛都会有自己喜欢的牛棚的编号,问有多少种方法可以将它们全部安排进牛棚且每个牛棚只有一只奶牛。思路:状态压缩DP,因为牛棚每个只能用一次,所以把每个牛棚是否用过作为状态压缩,然后从第一个牛开始枚举到第n个。再枚举下一个牛用哪个牛棚,就可以转移了。原创 2016-04-19 20:06:59 · 291 阅读 · 0 评论 -
POJ 2288 Islands and Bridges
题目链接: http://poj.org/problem?id=2288题意:给出一个图,每个点都有权值,有一些边连接着这些点,现在定义一条哈密顿回路产生的值为以下三者之和:1、回路上的各个点的权值之和 2、回路中相邻点的乘积之和 3、如果回路中有c1c2c3,且c1与c3也相邻,那么就加上c1*c2*c3。现在求一共有多少条回路产生的值可以同时达到最大。思路:状态压缩DP,因原创 2016-04-19 19:38:09 · 274 阅读 · 0 评论 -
POJ 3311 Hie with the Pie
题目链接:http://poj.org/problem?id=3311题意:有一个人从编号为0的点出发,现在想把编号为1~n的点都经过至少一次,最后再回到0号点,每一条边都有一个权值,问走一遍最小值是多少。思路:状态压缩Dp,由于n很小,先用floyd算出两点之间的最短距离。然后用dp[s][i]表示,当前在i点,经过点的状态为s(用二进制表示每个点当前是否已经走过)的最小值。原创 2016-04-19 11:22:28 · 248 阅读 · 0 评论 -
POJ 1185 炮兵阵地
题目链接:http://poj.org/problem?id=1185题意:在n×m的地图上放置炮兵,每个炮兵的攻击范围是上下左右各延伸两格,地图上有一些位置为山地,不可以放置,问给出地图可以放置炮兵的最多数量。思路:状态压缩DP,如果当前第i行放置,由于考虑到炮兵的攻击范围,所以需要枚举前两行的状态,所以用dp[i][s1][s2]来表示第i行状态为s1,上一行状态为原创 2016-04-18 17:12:59 · 249 阅读 · 0 评论 -
POJ 2244 Eeny Meeny Moo
题目链接:http://poj.org/problem?id=2244题意:有n个点构成的环,一开始1号出去,然后隔m个出去一个,现在要求最后一个留下的是2号,求最小的m。思路:可以看做n-1个点,2号点为起点的约瑟夫环问题。枚举m,用公式算最后的编号,直到满足条件即可。#include #include #include #include #inclu原创 2016-05-05 20:42:48 · 295 阅读 · 0 评论 -
POJ 2115 C Looooops
题目链接:http://poj.org/problem?id=2115题意:初始值为A,每次加上C,问加多少次可以加到B,因为是用一个k位的二进制计算器,所以每次加完都要mod 2^k思路:扩展欧几里得。A+Cx - 2^k * t = B => Cx + 2^k*(-t) = B-A#include #include #include #include #原创 2016-05-05 20:52:20 · 245 阅读 · 0 评论 -
POJ 2142 The Balance
题目链接:http://poj.org/problem?id=2142题意:给两种砝码a,b,和待称量物品的重量d,用x个a和y个b来将物品称出,并使得x+y最小。思路:a * x + b * y = d,扩展欧几里得。先让x为最小非负整数解,算出y;再让y为最小非负整数解,算出x,两种情况取最小的即可。#include #include #include原创 2016-05-05 20:57:15 · 283 阅读 · 0 评论 -
POJ 2817 WordStack
题目链接:http://poj.org/problem?id=2817题意:有n个单词,如果两个单词相邻,可以在一个单词前面填充一些空格,使得两个单词对应位置上的字母相同(这些位置可以不相邻),最大的相同数量为这两个单词所产生的值。现在要找到一种排列方式,使得这些单词产生值之和最大。思路:先计算出这些单词两两相邻所产生的值,在LCS的基础上做了一个小改动。然后用状态压缩DP计算原创 2016-04-19 19:13:02 · 321 阅读 · 0 评论 -
POJ 3133 Manhattan Wiring
题目链接:http://poj.org/problem?id=3133题意:给一个地图上有两个2,两个3,以及障碍格子和非障碍格子,现在要把两个2用线连接起来,两个3用线连接起来,求连接线之和的最小长度。思路:插头dp,格子分类:2/3格子 , 普通格子 , 障碍格子。2/3格子只能为单插头 , 普通格子为0插头或者2插头。其次是连通性,分2号线连通和3号线连通,即用4进制原创 2016-11-06 21:17:15 · 458 阅读 · 0 评论 -
POJ 1739 Tony's Tour
题目链接:http://poj.org/problem?id=1739题意:求从左下角走到右下角,每个非障碍格子只走一次的方案数。思路:求简单路径的数量,这个简单路径起点和终点固定,其次要把所有的非障碍格子都访问到。所以分为起点、终点、障碍格子和一般格子,一般格子有两个插头,且不能形成回路,即不能合并已经连通的插头。#include #include #in原创 2016-11-06 21:07:46 · 408 阅读 · 0 评论 -
POJ 2151 Check the difficulty of problems
题目链接:http://poj.org/problem?id=2151题意:有m道题,T个队伍,每支队伍对于每个题目都有一个概率将其做出来,求每支队伍至少做出一题且至少有一个队伍做出的题目不小于n道的概率。思路:首先每支队伍至少做出一题的概率,每个队伍做题目是独立的,所以将每支队伍至少做出一题的概率乘起来得到概率p。在当前情况下,再求至少有一个队伍做出的题目不小于n,那么就原创 2016-06-22 12:36:40 · 228 阅读 · 0 评论 -
POJ 3071 Football
题目链接:http://poj.org/problem?id=3071题意:有2^n个队伍,给出每个队伍i对战队伍j的胜率,求这些队伍中胜率最大的队伍编号。思路:因为n比如1~8:第一回合(两个人) 1-2 3-4 5-6 7-8第二回合(四个人一组,但是每组已经淘汰了两个人)如果1第一回合赢了,那么1可能和3或者4对局,其他同理。第三回合(八个人一组,每原创 2016-06-30 16:02:45 · 275 阅读 · 0 评论 -
POJ 2096 Collecting Bugs
题目链接:http://poj.org/problem?id=2096题意:一个bug属于一个分类和一个子系统,现在有n个分类和s个子系统,然后一天可以发现一个bug,这个bug等概论属于一种分类和一种子系统。问发现多有类别的bug和所有类别的子系统的期望天数。思路:概率dp,dp[i][j]表示已经发现了i个分类和j个子系统,达到目标的期望天数。求期望用倒推,dp[n][原创 2016-05-19 16:28:19 · 269 阅读 · 0 评论 -
POJ 3744 Scout YYF I
题目链接:http://poj.org/problem?id=3744题意:一开始有一个人在1号点,他有p的概率向前走一步,有1-p的概率向前跳两步,然后有一些位置是地雷,不能走,问他可以成功穿越雷区的概率。思路:划分区间求概率之积。一个区间只有一个地雷,这样这个区间就变成了,一开始在起点,然后跳过地雷的概率(跳过地雷后一定是在下一个区间的起点),f[i+2] = f[i]原创 2016-05-18 08:26:56 · 239 阅读 · 0 评论 -
POJ 3132 Sum of Different Primes
题目链接:http://poj.org/problem?id=3132题意:给定n,k,求选k个小于等于n的素数之和为n的方案数。思路:范围内有100多个素数,搜索肯定是不行的,所以我们考虑用dp来解决。f[i][j]表示选i个素数,和为j的方案数。那么对于当前的数x,就有f[i][j] += f[i-1][j-x],然后去枚举i和j。f[0][0] = 1,f[k][n]原创 2016-05-17 19:20:22 · 301 阅读 · 0 评论 -
POJ 1061 青蛙的约会
题目链接:http://poj.org/problem?id=1061题意:我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会原创 2016-05-05 21:06:12 · 285 阅读 · 0 评论 -
POJ 3254 Corn Fields
题目链接:http://poj.org/problem?id=3254题意:在n×m的地图上,有一些地方可以放牛,有一些地方不可以,而且一只牛的上下左右位置不可以再放其它的牛,求在给定地图上一共有多少种放牛方案。思路:状态压缩DP,我们一行一行的放,当前行放置会受到上一行放置状态的影响,我们用dp[i][s]表示第i行的放置状态为s时的方案数,那么dp[i][s] =原创 2016-04-18 17:09:27 · 218 阅读 · 0 评论 -
POJ 1077 Eight
题目链接:http://poj.org/problem?id=1077题意:八数码问题,求解一种思路:很经典的bfs问题,可以用来练习双向bfs。#include #include #include #include #include #include #include #include #include #include #include原创 2016-05-12 16:09:59 · 278 阅读 · 0 评论 -
POJ 2503 Babelfish
题目链接:http://poj.org/problem?id=2503题意:给一个词典,格式为单词x对应单词y,现在输入一些单词y,输出各自对应的单词x。思路:建一棵trie树,在每个单词的结尾字母节点处附上单词y。然后查找的时候直接输出结尾字母节点的单词即可。或者也可以用map水一下。trie树代码#include #include #incl原创 2016-02-20 11:23:40 · 416 阅读 · 0 评论 -
POJ 2309 BST
题目链接:http://poj.org/problem?id=2309题意:好的,让我们来用一下原图,就是这样一个二叉树,给你一个节点,让你求这个节点和其子节点中,编号最大的和最小的,比如求12的就是 9和15。思路:让我们先把这些编号用二进制来表示。找一下规律,发现每个数在第几层是由它后面有几个0决定的而且一个节点在范围内属于中间的那个数,左右原创 2016-02-16 13:10:34 · 356 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers
题目链接:http://poj.org/problem?id=3468题意:有n个数,将一个区间上的数都加上一个值,或者查询一个区间的和。思路:线段树或者树状数组模板。树状数组专题链接:http://blog.csdn.net/chy20142109/article/details/50673749#include #include #i原创 2016-02-16 13:27:24 · 295 阅读 · 0 评论 -
POJ 2155 Matrix
题目链接:http://poj.org/problem?id=2155题意:给一个二维矩阵,每次一个操作,将一个矩形范围内的值改变一次,或者查询一个点的值。思路:二维树状数组模板题。树状数组专题链接:http://blog.csdn.net/chy20142109/article/details/50673749#include #incl原创 2016-02-16 13:23:17 · 281 阅读 · 0 评论 -
POJ 1195 Mobile phones
题目链接:http://poj.org/problem?id=1195题意:给一个二维矩阵,每次在一个点上增加一个值,或者求一个矩形范围内的和。思路:二维树状数组模板,查询的时候,如果我们query(x2,y2)是求的从(1,1,)到(x2,y2)的所有和。所以答案是q(x2,y2)-q(x2,y1-1)-q(x1-1,y2)+q(x1-1,y1-1)树原创 2016-02-16 13:20:24 · 330 阅读 · 0 评论 -
POJ 3321 Apple Tree
题目链接: http://poj.org/problem?id=3321题意:给一棵树,每个节点有一个编号,告诉你这棵树的构造。可以将一个节点的值改变,或者求一个节点及其所有子节点的和。思路:如果按照题意去模拟的话,时间复杂度是不稳定的,当这棵树为链时,就会超时。我们可以试着用树状数组来解决这个问题,我们将树的节点看做一个个直线上的点,我们要考虑查询的时候一个节点及其子原创 2016-02-16 12:27:15 · 321 阅读 · 0 评论 -
POJ 1990 MooFest
题目链接:http://poj.org/problem?id=1990题意:有n个奶牛站成一排,每只奶牛都有两个值,v和pos,如果两只奶牛i和j想传话,需要消耗max(v[i],v[j]) * | pos[i]-pos[j] |现在求n个奶牛之间互相都传话一次,一共需要消耗多少?思思路:答案是n*(n-1)/2个数的和,但是如果我们一个个求的话,会超时。首先,我们原创 2016-02-16 12:02:15 · 288 阅读 · 0 评论 -
POJ 3067 Japan
题意:日本的东西海岸分别有n,m个城市,现在有k条线路将东西岸的城市连接起来,求有多少个线路交叉点。思路:这道题的本质是统计逆序对,我们按照东岸编号先排个序,那么假设当前这条线路是东-西是 x - y。首先考虑东海岸编号互不相同,如果之前的线路中,有西海岸的城市编号大于y,就会产生一个交叉点。因为之前的线路中,东海岸的编号都是小于x,所以必然会交叉。所以我们排好序之后,只看西海岸的编号统计原创 2016-02-13 23:32:52 · 384 阅读 · 0 评论 -
POJ 2481 Cows
题意:有n个奶牛,每个都有一个区间[L,R],如果奶牛i的区间是奶牛j区间的真子集,那么说j比i强壮。现在告诉每只奶牛的区间,问对于每一只奶牛,有多少只奶牛比它强壮。思路:我们将奶牛按照L为第一关键字升序,R为第二关键字降序,那么对于排好序的奶牛来说,它前面的奶牛都是左边界小于等于它的,那么我们用树状数组查找一下右边界有多少不小于它的即可。如果两只奶牛区间一样,那么直接赋值一下上次原创 2016-02-13 23:36:24 · 329 阅读 · 0 评论 -
POJ 1056 IMMEDIATE DECODABILITY
题目链接:http://poj.org/problem?id=1056题意:给一些由0/1构成的编码,问问它们是不是存在某个编码为另一个编码的前缀。思路:trie树解决字符串前缀问题。我们把每个单词x加入trie树的时候考虑两种情况:(1) 是否存在已加进去的单词y是x的前缀。(2) 是否存在已加进去的单词y,x是y的前缀。我们对每个单词的结尾字母节点进原创 2016-02-20 11:35:08 · 300 阅读 · 0 评论 -
POJ 3630 Phone List
题目链接:http://poj.org/problem?id=3630题意:给一些字符串,问这些字符串是否存在一个字符串是另一个字符串前缀的情况。思路:trie树解决字符串前缀问题。我们把每个单词x加入trie树的时候考虑两种情况:(1) 是否存在已加进去的单词y是x的前缀。(2) 是否存在已加进去的单词y,x是y的前缀。我们对每个单词的结尾字母节点进行标记。原创 2016-02-20 11:43:39 · 281 阅读 · 0 评论 -
POJ 2001 Shortest Prefixes
题目链接:http://poj.org/problem?id=2001题意:给n个单词,对于每个单词求出一个前缀,这个前缀不能是其他单词的前缀,只能用来唯一表示这个单词,而且使得前缀长度最短。思路:建一棵trie树,对于每个字母节点都进行计数。那么对于一个单词求最短唯一前缀,只需从每个单词开头字母开始去访问这棵树,在第一个计数节点为1的地方停止输出即可。#inclu原创 2016-02-20 11:55:02 · 309 阅读 · 0 评论 -
POJ 1915 Knight Moves
题目链接:http://poj.org/problem?id=1915题意:给定n*n的棋盘以及起点和终点,求马的最小步数。思路:简单的bfs,可以用来练习双向bfs。#include #include #include #include #include #include #include #include #include #include原创 2016-05-12 10:05:32 · 216 阅读 · 0 评论 -
POJ 2407 Relatives
题目链接:http://poj.org/problem?id=2407题意:求有多少个比n小且与n互质的正整数。思路:单个欧拉函数的计算。原创 2016-04-27 12:49:28 · 270 阅读 · 0 评论 -
POJ 3090 Visible Lattice Points
题目链接:http://poj.org/problem?id=3090题意:有一个n+1 * n+1 的点阵,从(0,0)号点向各个点连线,问一共可以看到多少个点( 比如(2,4)会被(1,2)挡到 )。思路:考虑(x,y)是否能被看到,仅当x与y互质,否则就会有( x/gcd(x,y) , y/gcd(x,y) )去挡到这个点。即求原创 2016-04-27 18:47:13 · 271 阅读 · 0 评论 -
POJ 2513 Colored Sticks
题目链接:http://poj.org/problem?id=2513题意:有一些木棍,两端染有颜色,问能不能将所有的木棍首尾相连,并且使得每个连接处的位置颜色一致(如果a和b首尾相连,a尾部的颜色和b首部的颜色相同)。现在给出每根木棍首尾的颜色,求解问题。思路:把每个颜色看做一个点,一根木棍看做两个点之间的边,那么问题就转化为图中是否有欧拉路( 1、 0/2个点的度数原创 2016-02-28 10:37:25 · 214 阅读 · 0 评论