基础dp
文章平均质量分 68
ACMer_hades
没有伞的孩子只能够努力奔跑!
展开
-
Special的——动态规划入门教程
通过金矿模型介绍动态规划点击下载01背包测试数据.rar 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产转载 2015-02-11 23:04:13 · 718 阅读 · 0 评论 -
hdu(5389)——Zero Escape(01背包变形)
啊,这是一道挺不错的动态规划的题目呢。原创 2015-08-14 21:58:35 · 693 阅读 · 0 评论 -
hdu(1114)——Piggy-Bank(完全背包)
唔。。最近在练基础dp这道题挺简单的(haha),但是我只想说这里得注意一个细节。首先题意:有T组样例,然后给出储蓄罐的起始重量E,结束重量F(也就是当它里面存满了零钱的时候),然后给你一个数N,代表现在有N种类型的硬币。然后接下来N行,每行分别有两个数字P,W,P代表的是这种类型零钱的价值,W则代表的是这种类型零钱的重量,零钱的数量不限。然后要你输出在满足当前重量就是F的情况原创 2015-08-17 21:51:57 · 905 阅读 · 0 评论 -
hdu(1069)——Monkey and Banana(LIS变形)
题意:现在给你n个石块,然后它由坐标来表示(x,y,z)。但是它可以有不同的方法,也就是说它的三个坐标可以轮换着来的。石块的数量不限,但是每次都必须保持上底面的长和宽严格递减,然后问你用这些石块所能拼成的最大高度是多少。思路:因为坐标有多种情况,所以我们可以把每次的情况都存下去。这里需要注意的是,在保存的时候,我们要保持x的坐标是大于y的,这样方便我们之后的排序。然后就直接原创 2015-08-17 22:02:49 · 780 阅读 · 0 评论 -
hdu(2859)——Phalanx(dp)
题意:现在有一个n*n的矩阵,然后每个格子中都有一个字母(大写或小写组成)。然后询问你现在最大的对称子矩阵的边长是多少。注意这里的对角线是从左下角到右上角上去的。思路:这道题我自己写出了dp的定义式,但是要怎么转移方程并没有推出来。我看了好久的题解才明白的,果然还是太弱。。。首先我们定义:dp[i][j]为第i行第j列所能够组成的最大对称子矩阵的长度。转移方程为:dp[i]原创 2015-08-20 00:00:05 · 1427 阅读 · 1 评论 -
spoj(196)——Musketeerst
题意:现在有n个人,他们按照逆时针顺序围成一圈。他们要进行决斗n-1场,也就是被拉出来的那个人与紧靠其右的人决斗。第i个人与第i+1个决斗(如果i==n,那么则与第一个人决斗),输的人退出圈子,那么紧靠输的人右边的人成为与赢着直接相邻的人。任意两人的决斗的胜负会在矩阵中给出,a[i][j]=1,代表i与j决斗时,i赢,a[i][j]=0,i总是输。问你并输出所有可能赢得整场决斗的人的序号。原创 2015-09-10 22:54:54 · 705 阅读 · 0 评论 -
hdu(5375)——Gray codet
= = 不小心又弄到这么晚了。。。昨天真的好累的说,写完这篇就去睡觉了。。。题意:现在有一个字符串表示的二进制串,然后它有三种标记:0,1,?;其中问号的作用是你可以在这个位置填上1或是0。如果是1,代表可以获得这个位置的价值,0则不能。然后有len个数字,分别代表的是每个位置上可以获得的价值a[i]。然后现在要你把这个二进制串转化为格雷码,并问你能够获得的最大价值是多少?二进制转原创 2015-09-11 00:19:15 · 498 阅读 · 0 评论 -
zjnu(1175)——合唱队形【基础算法・动态规划】
题意:DescriptionN位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1…>TK(1你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。原创 2015-10-18 20:31:02 · 1214 阅读 · 0 评论 -
zjnu(1299)——零件分组(LIS变形)
零件分组(Stick)-动态规划-中高级Case Time Limit:1000MSTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 62 Accepted: 21Description某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi)。现原创 2015-12-02 23:01:21 · 3193 阅读 · 0 评论 -
hdu(5119)——滚动数组dp
题意:现在一个人有n个朋友,它的每个朋友都有一个值,它每次可以选择一些朋友的值然后将它们异或起来,如果最后的异或和大于等于M的话,那么这个人就赢了。问,这个人有几种赢的方法。思路:求有几种方法的题目都可以用dp来思考。dp[i][j]:前i个人异或和为j有几种方法。由于直接开40个人会MLE,所以只能用滚动数组来代替了。dp[i%2][j]=dp[(i-1)%2][j]+dp[原创 2016-01-22 16:57:35 · 593 阅读 · 0 评论 -
51nod(1183)——dp
1183 编辑距离编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten (k->s)sittin (e->i)sitting (->g)所以kitt原创 2016-02-26 21:28:07 · 644 阅读 · 0 评论 -
poj(1390)——Blocks
题意:就是给你总共n个方块,然后让你每次消去一些方块,然后获得的得分是消去方块数的平方。问最后游戏结束的时候得分最大是多少?思路:这道题是一道记忆性动归程序,主要是那个dp的状态转移方程有点难想。。。首先,我们记click_box(i,j,ex_len):表示的是在第j个大块之后有ex_len长度的大块(大块就是相同颜色进行合并之后的块)且j的颜色和ex_len的颜色相同时,在这种原创 2016-04-12 14:53:57 · 980 阅读 · 0 评论 -
poj(2184)——Cow Exhibition(01背包变形)
其实我想说这道题我觉得我自己并没有深刻的理解。但是今天做了一下,先把现在的想法记录下来 。题目的大致意思是:有N头牛,每头牛都有一个s值代表智商值,f值代表它的幽默值。然后问你智商值和幽默值的总和值最大是多少,其中必须保证智商值的和与幽默值的和为非负数。一开始我想到的也是01背包,但是这里还有负值,于是我就没有办法了。于是学习到了一个相当于把坐标平移的方法。因为这里有-1000原创 2015-08-02 22:18:19 · 809 阅读 · 0 评论 -
poj(1088)——滑雪(经典递推型动归)
题意:中文题,就是在所有的点中找一个点作为起点,然后叫你找出从起点开始的最长路径是多少。这里高度必须严格递减。思路:一开始我碰到这题时,没有思路,是看题解写的。但是今天我回头再去看时,发现自己能够独立写出来了,而且和上次的方法不一样。也许这就是进步吧!其实就是一个递推型动归,如果理解了上一题,那么这题也好做了。这是第一次写的:#include#include#i原创 2015-08-12 20:33:00 · 1246 阅读 · 0 评论 -
hdu(1160)——FatMouse's Speed
题意:现在给你一些数据输入,第一个代表的是体积,第二个代表的是它的速度。然后题目让你找到当体积递增但是速度递减时的最长的一个子序列,注意这里体积是要严格的递增的,速度则是要严格的递减的。最后要你把他们的序号输出。思路:是不是有点感觉像LIS问题。但是这里还是有点差别的。因为它要让你记录。首先我们先对体积从小到大排序,然后我们对速度进行最长递减子序列的查询。这里的记录前驱和我们上原创 2015-08-12 13:14:06 · 792 阅读 · 0 评论 -
dp经典题目
Ep 1:数塔问题(ZJNU OJ——1155)在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?已经告诉你了,这是个DP的题目,你能AC吗?#include#include#includeusing namespace std;int aMaxSu原创 2015-02-11 14:36:18 · 831 阅读 · 0 评论 -
不容易系列之(3)―― LELE的RPG难题——中级
Description人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求原创 2015-02-12 21:56:19 · 792 阅读 · 0 评论 -
ZJNU——1695(分栗子)
分栗子Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 90 Accepted: 18Description亚洲赛要结束了,韩老师为了慰劳各位队员买了n袋栗子吩咐qs分给大家。馋嘴的qs想要把尽可能多的栗子给自己,但是又不能让大家发现,于是他决定在不超过一半原创 2015-02-27 18:31:21 · 1761 阅读 · 0 评论 -
贪心法——乘船问题
题目大致是:有n个人,第i个人的重量为w[i],每艘船的最大载重量均为c,且最多只能乘两个人。用最少的船装载所有人。解:首先从最轻的人开始考虑,那么他应该和最重的人去坐,如果每个人都不能和它坐船,那么唯一的方法就是每个人做一艘船。否则,他应该选择能够和他一起坐船的人中最重的那个,这样子才不会浪费。 #include#include#include#includeus原创 2015-03-05 22:15:34 · 2609 阅读 · 0 评论 -
HDU(1267)-下沙的沙子有几粒?
http://acm.hdu.edu.cn/showproblem.php?pid=1267题目意思大致是:假定一个字符串由m个H和n个D组成,从左到右扫描该串,如果字符H的累计数总是不小于字符D的累计数,那么,满足条件的字符串总数就恰好和下沙的沙粒一样多也就是给你两个数m,n,让你求在满足上面条件的情况下,所求得的字符串有几种。 这道题是我自己第一次做dp,哈~ 而且也写出来原创 2015-03-09 20:58:21 · 1043 阅读 · 0 评论 -
HDU(1257)——最少拦截系统(dp问题)
Problem Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求原创 2015-03-13 16:10:13 · 2461 阅读 · 3 评论 -
HDU(2571)——命运(简单dp)
Problem Description穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关。要知道,不论何人,若在迷宫中被困1小时以上,则必死无疑!可怜的yifenfei为了去救MM,义无返顾地跳进了迷宫。让我们一起帮帮执着的他吧!命运大迷宫可以看成是一个两维的方格阵列原创 2015-03-23 09:46:03 · 687 阅读 · 0 评论 -
HDU(1050)——Moving Tables
The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure.The floor has 200 rooms each on the north side and south side along原创 2015-03-18 21:40:57 · 661 阅读 · 0 评论 -
poj(3186)——Treats for the Cows
题意:现在告诉N个数,然后告诉你它们的价值v[i],你每次都可以从头或者尾部取出一个数字,并且加上它的价值,它的价值的计算方式是:v[i]*a(其中a代表的是第几天把它取出来的),现在你的目的就是为了使取出n个数的总价值和最大化。思路:一开始我的dp方程定义错了,所以导致有点推不下去。应该定义为:dp[i][j],i代表从左边起取i个数,j代表从右边起取j个数,然后dp的定义是按照原创 2015-08-22 23:16:49 · 918 阅读 · 0 评论 -
poj(1661)——Help Jimmy(二维dp)
题意:现在共有N个平台,然后一开始它站在坐标为(x,y)的位置,然后它每次下落与往左右走的速度都是1m/s,并且它每次下落的距离不能超过max米。告诉你每个平台的左右端点的坐标与它的高度,然后问你它到达地面的最早时间是多少。注:如果Jimmy恰好落在某个平台的边缘,被视为落在平台上。所有的平台均不重叠或相连。思路:这道题一开始卡了我好久。。(我一开始还以为这道题又和Ma原创 2015-08-23 22:22:25 · 756 阅读 · 0 评论 -
hdu(1078)——FatMouse and Cheese(递推型动归)
题意:现在有n*n的方块,然后每个方块中都有一个值,代表这个方块中含有奶酪的数量。现在那个老鼠站在(0,0)点,并且它每次最多走k步,然后每次走到一个点,它都能获得那个点上含有的值,但是要保证它下次走到的点含有的奶酪数必须多于它现在在的那个位置上的奶酪数量。思路:这道题也是一道递推性动归,和poj 1088 滑雪那题的区别就是这题最多可以走k步。这道题让我更加深刻的理解了递推性原创 2015-08-12 20:20:47 · 672 阅读 · 0 评论 -
OpenJudge(1221)——UNIMODAL PALINDROMIC DECOMPOSITIONS
题意:现在给你一个叫Unimodal Palindromic序列的东西,它符合是回文串并且它是峰型的,峰型意味着它就是先递增再递减。思路:一开始没思路,后来尝试着找思路,但是打表打出来之后发现有一些问题。因为没有限制条件,于是会发生有重复的现象。于是设dp[i][j]表示当和为i时,而且这个序列中的最小的那个数是大于等于j的时候所能够组成的情况数有几个于是dp[i][j]=dp[i原创 2016-04-12 22:20:46 · 658 阅读 · 0 评论