![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
poj题解
For Resting
不一样的生活,在于自己的想法
展开
-
poj3662,二分 + 最短路,好题啊
链接: poj3662题意: 这几天在做二分的题,开始看到怎么是图论的题,吓我一跳; 不过还好,经过思索,发现是个二分+最短路的题; 题上给你 n 个点,要你从 1 连接电话线路到 n; 给你 p 条路,有的可以不选; 给你一个 k,表示有 k 条路线可以不用给钱; 上面那个 k 是最坑的,题上说的时候完全看不懂。。 让你求这些路径中除掉 k 条路之后的最长那条的最小值。。理解: 开原创 2015-11-03 17:38:30 · 369 阅读 · 0 评论 -
POJ3614 贪心 堆
此题大意: 有一些奶牛,它们想晒黑皮肤,每只奶牛有一个min_SPA 和 max_SPA,如果高于max_SPA,就不能晒黑,低于的话就会晒伤,而题上又给了几瓶防晒霜,能够使奶牛达到一定SPA,并且一瓶可以几头奶牛一起用,让你求最大的晒黑的奶牛头数。开始我是这样理解的: 先对奶牛的SPA进行排降序,以max为主,min为辅; 然后对防晒霜排降序,以SPA的值为主,防晒头数为辅; 然后循环找防原创 2015-10-10 15:10:12 · 744 阅读 · 0 评论 -
poj2385 递推
题目链接:点击打开链接题意:有一只牛要吃苹果,这也有两棵苹果树;它摘不到苹果只有等着苹果自己掉下来;苹果在每一秒都会掉一个下来;牛就在树下来回跑动接住苹果并吃掉;苹果一共会掉 T 秒;牛最多在两棵树之间来回跑动 W 次;问牛在不超过 W 次之内能最多能吃到多少苹果;牛最初站在 1 号树下;理解:该题一看就知道是 dp 啦;所以推一原创 2016-07-26 10:54:56 · 271 阅读 · 0 评论 -
poj2686 状压dp
题目链接:点击打开链接题意:有个人要从一个城市 a 到城市 b;其中他有 n 张马车票;每张马车票有一个速度 t[i];地图上有 p 条路;每条路是双向的,并且有个距离 d[i];他每走一条路就要花一张马车票;一张马车票只能用于一条路;求他所要花的最短时间;理解:dp 咯。。。推不出来啊,状态压缩dp;一看递推式含义就能明白很多了原创 2016-07-21 20:45:13 · 304 阅读 · 0 评论 -
poj1745 递推
题目链接:点击打开链接题意:给 n 个数,判断这些数在任意加减的组合下能否被 k 整除;理解:看题懵逼;坐了俩小时,只有看题解;还好题解能看懂;说的是这样的;首先这些数要通过加减组合起来;那么他们的余数只要等于了 k,就说明能被整除;于是给定递推式:前 i 个数的和的余数是否为 j;即:dp[i - 1][j] == 1的情况下,有:dp原创 2016-07-19 17:45:34 · 124 阅读 · 0 评论 -
poj3211 转换 01背包
题目链接:点击打开链接题意:有个很忙的人要洗衣服;衣服有 m 种颜色,有n堆;题目说必须把一种颜色的衣服洗了才能洗其他颜色的;每一堆衣服都有一个洗的时间和颜色;每次洗衣服都可以洗两堆;求洗衣服的最短时间;理解:又是一个01背包;根据题意可知,每一种颜色有一个最短时间值;求每一种颜色的最短时间值就是用01背包;就是就算在所有时间中找出和原创 2016-07-19 11:10:22 · 283 阅读 · 0 评论 -
poj3260&&hdu3591 多重背包+完全背包
题目链接:poj:点击打开链接hdu:点击打开链接题意:一个人要买 t 元钱的东西;他有 n 种钱;每种钱有 v[i] 的价值;每种钱有 w[i] 个;然后他要在花 t 这么多钱的同时用最少的硬币数量;并且商店找回的硬币数量也是最少的;如果不能买或者找不回那么多钱就输出 -1;理解:两题题意一模一样;所以放一堆写题解;并不造怎原创 2016-08-13 20:51:07 · 393 阅读 · 0 评论 -
poj1276 多重背包
题目链接:点击打开链接题意:取款机的问题;有 n 种钱;每种钱有 v[i] 的价值;每种钱有 w[i] 张;问给定要取得钱 cash 之后能从取款机最多取多少钱;理解:多重背包;直接套模板;递推式:dp[i] = max(dp[i], dp[i - mul * v[i]] + mul * v[i]);其中的值根据代码定义;代码原创 2016-08-13 16:54:53 · 244 阅读 · 0 评论 -
poj1014 多重背包
题目链接:点击打开链接题意:与hdu1059的题一模一样;点击打开链接理解:多重背包;看做01背包会超时;直接套模板;与《挑战程序设计》书上多重背包是一样的;递推式:dp[i] = max(dp[i], dp[i - (i + 1) * mul] + (i + 1) * mul);其中的值根据程序而定;具体看hdu1059题解;但原创 2016-08-13 13:54:26 · 256 阅读 · 0 评论 -
poj2836 状压dp
题目链接:点击打开链接题意:给你 n 个点,然后用矩形去覆盖这些点;每个矩形最少覆盖两个点;点可以被重复覆盖;问最小的覆盖面积是多少;其中重复面积要重复计算;理解:状态压缩dp;1 超时的做法:递推式含义:dp[i] 表示 i 这种矩形状态下的最小值;递推式:dp[v[i] | v[k]] = max(dp[v[i] | v[k]], d原创 2016-08-12 19:35:46 · 352 阅读 · 0 评论 -
poj3254 状压dp
题目链接:点击打开链接题意:给一个 n * m 的矩阵;其中 0 表示可以在此处种玉米;1 则相反;而农夫规定两株玉米不能种在一起;即一株玉米的上下左右都没有其它玉米;问有多少种种法;其中不种也是一种方法;理解:状态压缩 dp;参考:点击打开链接 和 点击打开链接递推式含义:dp[i][j] 表示在第 i 行的 j 状态有多少种方法;原创 2016-08-11 16:40:11 · 204 阅读 · 0 评论 -
poj2441 状压dp
题目链接:点击打开链接题意:有 n 头牛;有 m 个棚;农夫约翰想要把牛关进棚里;每头牛不会分享同一个棚;而且每头牛都有自己喜欢的 p 个棚,其他棚都不喜欢;问要这些牛关进棚可以有多少种方式;理解:状态压缩;递推式含义:dp[i] 表示有 __builtin_popcount(i) 头牛已经关进棚的方式总数;其中,__builtin_po原创 2016-08-10 19:44:15 · 457 阅读 · 0 评论 -
poj3046 划分数dp
题目链接:点击打开链接题意:有 T 种蚂蚁家庭;每个家庭 ai 个蚂蚁;给你一串序列,相同的数字代表是一个家庭;问你这一串序列能组成多少不同的(1 ~ T)的集合;理解:云里雾里;书上原题;是 dp 的多重集组合数;直接套模板;递推式:dp[i + 1][j] = sigma(dp[i][j - k]);其中 k 是 [0, min(原创 2016-08-05 10:22:32 · 409 阅读 · 0 评论 -
poj2392 布尔值型 多重背包
题目链接:点击打开链接题意:牛要上太空;要用砖造一座塔;每块砖有高度 h_i,数量 c_i,砖放下后的高度不超过 a_i;求给你的砖能搭建的最高的高度是多少;理解:多重背包,只是有些要注意的变化;递推式含义:dp[i] 表示能否从前一个高度推导过来;即:dp[i] = (dp[i - h_i] == 1);其中用过的砖的数量要小于 c_i 个原创 2016-07-28 15:48:24 · 252 阅读 · 0 评论 -
poj1742 布尔值型 多重背包
题目链接:点击打开链接题意:一个人有许多种硬币: A1, A2, A3, A4 .....Ai (1 每一种硬币有许多个: C1, C2, C3, C4.....Ci (1 问他可以用硬币组成多少种不超过 m 的价格;理解:这是楼教主的男人必过八题;可惜了,自己做不来;神解释说是多重背包;但是和书上的不一样;其实递推式才是真正有用的东西;原创 2016-07-28 15:26:42 · 321 阅读 · 0 评论 -
poj3616 递推
题目链接:点击打开链接题意:一只牛要在生产奶,它需要一个计划表;农夫会有 m 次可能来挤奶;每一次有起始时间 L,结束时间 R,挤的奶量 E;而牛产完奶要休息 r 时间;问如何安排才能得到最多的奶量,求出奶量;理解:脑子转不过来;这儿只有一个像 dp 会使用到的变量 m;所以要向一维 dp 转换思想;找出递推式含义:dp[i] 表示以原创 2016-07-26 16:31:14 · 256 阅读 · 0 评论 -
poj1797 spfa 最短路
题目链接:点击打开链接题意:给一个无向图,每条边有个能承受的重量;问从1到n的最大通过的重量;理解:这是以前比赛的一个题;当时用的多个最短路,最后超时;实际上在最短路的递推式上改一下就行了;d[v] = max(d[v], min(d[u], w[u, v]));用这个递推式就可以求出最后的答案;实际上跟求最短路是一样的;刚学的spfa用原创 2016-11-19 10:33:04 · 496 阅读 · 0 评论 -
poj3268 spfa 最短路
题目链接:点击打开链接题意:给定一个有向图;问每头牛到固定地点聚会的花费加上回家的花费之和最大的花费是多少;其中去和回都是最小的花费;理解:此题看上去可以先算回去的最小花费;但是每头牛来的最小花费怎么算呢?由于这个图是有向图;如果把方向翻转了,那么去就是回,回就是去;再算一次最短路就可以求出每头牛去和回的最短路之和了;那么两次spfa就可原创 2016-11-19 10:40:50 · 389 阅读 · 0 评论 -
poj3040 贪心
此题题意如下: 有n种硬币,并且硬币是按照一定次序排列的如:1,5,10,50。。。 网上说是这个次序导致它可以如此贪心的 然后有一个人要给他的牛钱,每周一点数量c,每次给的话必须大于等于c 给你一定数量的各种钱,让你求最长的周数。 此贪心解释如下: 1:大于c的就直接取; 2:如果小于就从大到小拿钱,能拿多少拿多少,但不能超过c; 3原创 2015-10-08 17:17:19 · 1077 阅读 · 0 评论 -
poj1338 Ugly Numbers
题意: 定义一个丑数:只能由2, 3, 5作为因子组成; 题意就是找第n个丑数; 特别的, 1也是一个丑数;理解: 这题是个面试题, 在校赛上见到了, 以前没做过; 之后看着题目数据很小, 而且受yick师兄引导,就打表过了; 今天看了正确的题解,于是就记录下来。很明显的可以看出,后面的丑数一定是有前面的丑数得来; 因此,先自己算出前面几个已知数; 这里是9个; num[n +原创 2015-12-03 20:37:27 · 110 阅读 · 0 评论 -
POJ1930,无限循环小数变分数
题意非常好理解,看题就知道,不在详述。方法如下: 此题主要是推公式,依据循环节推公式: 1.循环节有多少就有几个9,然后用0添齐总位数,这就是分子; 2.然后用整个数减去没有循环节的整数,得到的就是分母; 3.不要问我为什么,我也不造,知识推导而已,小学奥数!!! 4.如0.12312…,若12为循环节,那么分子就是99000,然后分母就是12312 - 12原创 2015-10-10 21:31:09 · 681 阅读 · 0 评论 -
poj2010,无语的题,真的做不来,以后见到这类型再说吧,我用的堆(二分也可做)
题意: 有 c 头牛考上了大学,这大学免费给牛学费,但总的学费最多只有 f ,因此只有一些牛能去, 学校决定录取 n 头牛,并且学校录取 n 头牛后牛的分数的中位数尽量大,若不能录取,则输出 -1;想法:开始很天真的直接用堆来做,但发现直接WR。。方法:是先处理整个排了序的数组; 因为要找中位数,所以对它起影响的只有它本身; 因此,我们直接将前面的 n/2 个值算出来; 再把后面的 n/2 个原创 2015-10-19 20:30:07 · 470 阅读 · 0 评论 -
poj1703 并查集,食物链那样的题
题目意思好懂得很,就不再啰嗦。并查集:以前一直只是简单地在图上用过,现在见到这种类别偏移的题这不是很好做啊。。。 主要思想就是要把一种物质的两面都建立起来,这样就能很好判断了; 这个题就是将两个帮派的人维护起来,并联系到两种形态; 如1,2是对立的帮派,那么1和2 + n就是一派的,2和1 + n就是一派的; 然后就这样建立并查集;这题有坑就是只有两人时,那么这两人就是两个帮派的,因为这是题原创 2015-10-16 14:42:47 · 345 阅读 · 0 评论 -
poj3421 一道很无语的题,数据大,数学没学好啊
题意: 给你一个X,令X0等于1,Xm等于X; 然后是一个序列:X0,X1,,,Xm; Xi < X(i+1),Xi整除X(i+1)(即从X0到Xm都是X的因子); 让你求这个序列的最大长度,和在这个长度下的序列种数;理解: 开始我是直接枚举深搜,但提交超时,主要是题目的数据大吧,,,方法:(网上的方法我确实不能理解) 主要理解为质因子分解,因为后面的Xi是前面质因子乘起来的; 这样有原创 2015-10-22 20:37:20 · 1218 阅读 · 1 评论 -
poj3579,二分找答案,再二分查找
题意: 给一堆数,先求出所有两个数的差值; 输出这些数的中位数;理解: 直接枚举这些数肯定会超时,因为有C(n, 2)个,这是非常大的; 我开始是直接枚举我们要求的第中位数个的值,但这个数也是非常大的; 然后看了下别人的思路,发现我依然天真。。。 是这样的,先二分找答案,就是在一个范围内二分枚举答案; 判断这个答案是否行得通; 怎么判断呢? 二分查找在这个值的基础上有几个大于它的,原创 2015-10-31 18:52:19 · 1011 阅读 · 0 评论 -
poj3258 二分好题,最大化最小值
题意:一头牛,要过L这么宽河,河中有n个石墩,牛要从上面跳过去; 现在给你m次移除石墩的机会,要你移除后使得每两点之间的距离最大,并输出它;理解: 开始我觉得把整个距离之差弄出来看看,发现有的石墩计算后就不能计算了,但是一直找不到好方法去移除它; 于是我用了一个set,结果直接超时。。。 然后我就想了很久,发现可以记录下不该用的石墩之前的距离总和sum; 即如果前面的石墩不能用就加到sum原创 2015-10-30 20:24:33 · 515 阅读 · 0 评论 -
poj1823线段树
题意:有人要住旅馆,然后住在一些连续的房间里;那么让你求空闲的连续的旅馆的最大长度;理解:此题认真想想应该就是线段树了;然后合并的是区间,而不是单独的值;合并区间就有点麻烦了;主要就是两个区间合并的时候要注意中间是否可以再组成一个区间;‘做法就是记录此区间的两端没有住人的两端;然后将此区间的最大值求出来;之后向上合并;注意合并时要判断中间是否可以原创 2015-12-09 20:31:17 · 320 阅读 · 0 评论 -
poj2777线段树,状态压缩
题意:就是一堆石头,开始全是一种颜色;之后叫你染色,颜色不超过30种;染色的规则是一段一段染;叫你求某一段区间的颜色种数;理解:这题一看就是线段树;主要就是记录颜色的问题;开始我以为是线段树区间合并的问题;结果经过师兄师姐的熏陶;发现果然是状态压缩;就是用数字记录颜色的种数;因为不超过30种,所以用二进制每一位去记录颜色是一种很好的方法;原创 2015-12-09 20:51:30 · 310 阅读 · 0 评论 -
poj1845数学题
题意:就是求A的B次方摸9901;主要是数据太大,五千万的五千万。。。理解:开始做的时候看到确实没想法;然后去做其他题了,之后他们都过了;我就问了他们,他们说因子分解;于是我就再推了哈;发现可以做;怎么做呢?先对A质因子分解;然后推出:(1 + q^1 + q^2 +......+ q^B) *(1 + p^1 + p^2 +....原创 2015-12-10 21:24:04 · 380 阅读 · 0 评论 -
poj2352树状数组
题意:给一些星星的坐标;然后求出不在右边和不在上边的星星数;意思就是以这个星星为坐标原点,求第三象限的星星数,包括坐标轴;理解:这是我们校赛的时候Lx师兄出的题;开始以为要坐标离散化,在递推去做;然而我并不会,就没有做这题;之后他说时树状数组,我想了想,没想通;然后看了yick_liao师兄的题解;发现一个重大问题,我连题都没读完;题上还说,这些原创 2015-12-12 14:51:04 · 275 阅读 · 0 评论 -
poj3368线段树
题意:给你一串上升序的数;然后求i到j之间的数的最大重复次数;理解:这题稍微想想就是线段树了;然而我第一次看见这个的时候还不会区间合并;然后前一个周末练了这样的题型,于是今天再拿它练练;这题就是注意合并区间;代码如下:我的线段树确实写的好复杂....#include #include #include using namespace原创 2015-12-12 17:26:49 · 418 阅读 · 0 评论 -
poj2549折半枚举
题解:给n个数,求 a + b + c = d成立的最大的d,没有输出no solution理解:开始做的时候都把折半枚举给忘了;然后看了一下别人的思路,忽然发现是这样枚举的;使a + b = d - c成立的最大值d;可以枚举a + b再二分找d - c;于是我就这样写了...重点是a, b, c, d不同,并且d是最大的;听他们说用3sum的算法可以做,原创 2015-12-13 16:08:02 · 313 阅读 · 0 评论 -
poj1222开关问题, 高斯消元
题意:给个5X6的矩阵,只有0和1;然后叫你将1全部翻成0;理解:直接就是开关问题啦...枚举第一行的情况,推出所有...不过我自己竟然没考虑到0的情况....看讨论说可以用高斯消元法做;但我并不会...得学习下;原创 2015-12-14 18:20:49 · 465 阅读 · 0 评论 -
poj2674 弹性碰撞
这是个想法奇怪的题,,题意很简单题意: 有两种居民在一条路上,长度为l, 他们有自己的速度v; 他们每个人有自己的方向,坐标,名字; 然后他们相遇时会调转方向; 求最后离开的人的时间,名字;理解: 很显然这是一个弹性碰撞的题,但是我理解到了却并不会做; 开始我自己认为可以暴力模拟,后来发现不行; 就用了个O(1)的计算和O(log n)的查找,但发现还是超时,我也不懂为什么超时; 于原创 2015-11-27 16:07:10 · 540 阅读 · 0 评论 -
poj3045 贪心,并不是二分
题意: 一群牛在叠罗汉; 每头牛都有一个重量W和力量值X; 在叠的时候每头牛都有一个风险值R; 要你求总的风险值中最大的那个风险值R’;理解: 其实一直都没能理解到意思; 然后手贱看了大神的思想,发现果然如此; 可以如此证明: 因为两头牛切换位置只对他们自己受影响; 因此,如果A在上,B在下,则有: A: Ra = S + Wb - Xa; B: Rb = S - Xb; 反原创 2015-11-28 16:23:33 · 1394 阅读 · 0 评论 -
poj2100尺取法
题意:分解整数,将一个整数分解成多个数的平方和;理解:开始我以为可以暴力枚举,然后发现n是1e14次方;过不了,然后翻书发现是尺取法;就用尺取法写了;但是报了我一个超空间...随后算了下空间...果然用了1e7个longlong的字节;然后想啊....最后受大神影响,发现可以不用数组...结果只用了180k...代码如下:原创 2015-12-17 17:47:00 · 953 阅读 · 0 评论 -
poj1990两个树状数组
题意:有一群牛站在一条线上并且他们想要交流;然而他们都有点聋;所以他们具备一个能听的声音的最低值v;并且他们有一个位置x;题目让你求每两头牛交流之后的和;这个和的由来是由距离乘以max(v[i], v[j]);理解:想了半天,,知道用树状数组;但是确实不造怎么用;然后看了大神的理解;发现要用两个树状数组;而且还要推一个关系,并且这个关系就是用原创 2015-12-19 16:54:06 · 344 阅读 · 0 评论 -
poj1860 spfa判断负环
题目链接:点击打开链接题意:一个人有一种钞票,面值S;银行有N种钞票,每两种钞票之间可以进行兑换;其规则是:S' = (S - com) * rate其中 com 是手续费,rate 是兑换率,S' 是最终的钱;问经过多次兑换后,钱是否会增加;理解:这就是一个负环问题;不过说起来应该叫“正环”;先建图,然后推导递推式;把递推是改一下就可以知道原创 2016-11-19 10:51:28 · 359 阅读 · 0 评论