dp
文章平均质量分 87
画船听雨
和梦想谈一次恋爱,也要疯狂,也要坚持
展开
-
POJ 1742 Coins
这是一道典型的多重复背包问题。CoinsTime Limit: 3000MS Memory Limit: 30000KTotal Submissions: 24982 Accepted: 8452DescriptionPeople in Silverland use coins.They have coin原创 2013-05-21 19:48:58 · 2272 阅读 · 0 评论 -
sdut acm 最长上升子序列
“师创杯”山东理工大学第五届ACM程序设计竞赛火热报名登陆注册最长上升子序列Time Limit: 3000MS Memory limit: 65536K题目描述一个数的序列bi,当b1 2 S的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ...,原创 2013-04-23 09:40:30 · 2360 阅读 · 0 评论 -
ZOJ 3623 Battle Ships
Battle ShipsTime Limit: 2 Seconds Memory Limit: 65536 KBBattle Ships is a new game which is similar to Star Craft. In this game, the enemy builds a defense tower, which has L longevity. T原创 2013-04-23 09:23:59 · 2491 阅读 · 0 评论 -
ZOJ 3551 Bloodsucker
这是今天比赛中的一道题目,比赛的时候没弄懂怎么做,那时候对期望忘没了啊、、后来比赛结束之后才知道只是一道概率DP的题目、、可是不太会啊,所以就问同学+看题解终于弄懂了啊、、不容易啊、、题意:一共有n个人,每天都会有一个人又一定的几率变成吸血鬼,求所有人变成吸血鬼的期望。思路:概率DP,我们可以逆推,dp[i]代表i个人到所有人变成吸血鬼的概率,往上逆推。这里我说一下状态方程的推导:原创 2013-08-24 16:24:04 · 2395 阅读 · 0 评论 -
HDU 1059 Dividing 多重背包
这道题的意思是,有六件物品每件物品的价值依次是1,2,3,4,5,6每件物品的个数各不相同。求所有物品价值是否能够平分,就是总价值的一半是否能由当前的物品的价值组合出来。所以这是一道多重背包的问题。状态转移方程是:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0DividingTime Limit: 2000/1000 MS (Java/Others)原创 2013-09-06 20:44:24 · 959 阅读 · 0 评论 -
HDU 1069 Monkey and Banana
题目的大意是,人们对于猴子的聪明程度做了一个实验,在高处挂着香蕉然后给猴子一些箱子让他们任意的组合求最大的高度。但是要注意的是:1.给出的箱子矩形的三条边;2.每个箱子有六个面然后有三对的面积不一定相同;3.搭箱子的时候注意上面箱子的长与宽都要严格的小于下面的箱子,题目中说如果相同的话猴子就无法踩着啦。分析完题目之后我们就会发现,只要对箱子的长与宽进行排序,解题的策略是从前面的箱子中枚举找到一原创 2013-09-08 09:54:33 · 1270 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese
首先吐槽一下英语水平真心的不好啊,读了好几遍,又是百度又是谷歌的终于看明白了啊、、、题目的大体意思是:一个老鼠他很厉害啊,他在一个最大100*100的数组中藏了很多的蛋糕,他每次(0,0)点开始吃,由于那只猫的原因他每次最多前进K个格子,但是走是有条件的就是每次走到的点所藏的蛋糕必须比之前的多、、一开始以为是bfs但是因为他求的是吃到最多的蛋糕的数量所以会导致不是最长路的情况下也会吃到的最原创 2013-09-09 21:32:10 · 1024 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping!
首先说一下,一开始没读懂题目啊,之前做过的一道题目有点类似,影响了理解题意啊、、、题目的大意就是:给你N个棋子,每个人可以移动棋子,但是棋子移动的时候要注意:1,每个棋子只能向后移动不能向前移动:2,每个棋子移动到的下一个棋子必须比之前的大;3,每个棋子移动的范围是不确定的可以无限的移动。所以解题的思路就是:从1到N枚举所有的棋子,在它的后面找到比它大的数字,然后状态转移方程是:dp[j]原创 2013-09-10 19:45:35 · 806 阅读 · 0 评论 -
HDU 1506 Largest Rectangle in a Histogram
先说一下题意:给出N个柱状图,求连续的高度相同时最大的面积(就是说如果两个高度如果不相同求面积的时候取矮的)。一开始我求的状态转移方程是:dp[i] = max{h[i] , (num[i-1]+1)*min(h1[i-1],h1[i]) (如果后面小h1[i]更新成min(h1[i-1],h1[i]))};num[i-1]表示之前连续的个数;但是这个方程式是错误的如果遇到1,1,1,1,3,原创 2013-09-10 17:25:16 · 821 阅读 · 0 评论 -
HDU 1243 反恐训练营
这道题的解法和最长公共子序列很相似,就是多一个判断,是否更新之后的得分最高。反恐训练营Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2550 Accepted Submission(s): 582原创 2013-09-04 20:51:35 · 947 阅读 · 0 评论 -
HDU 1114 Piggy-Bank完全背包
注意这里的E是代表存钱罐为空时的质量,F代表存钱罐存满时候的重量。Piggy-BankTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7588 Accepted Submission(s): 3796原创 2013-05-31 19:47:21 · 2671 阅读 · 1 评论 -
HDU 4722 Good Numbers 2013年成都邀请赛原题
题意很简单就是给你两个数字,A,B。让你求出A和B之间所有 Good Numbers 的个数。 Good Numbers的定义是:如果一个数各个位置上的数字的和是10的倍数那么这个数就是 Good Numbers。比如19。因为1+9 = 10 所以19是 Good Numbers。由于数据范围很大10^18所以一定不可能是搜索,应该是一个数学推理;一开始我跟ZP学的,比如9543原创 2013-09-13 11:15:25 · 976 阅读 · 0 评论 -
HDU 1058 Humble Numbers
这道题是一道典型的DP的题目,在我们年轻的时候崔老师就给我们讲过啊、、、但是当时年少无知不会啊、、现在崔老师又给讲过了一遍茅塞顿开啊,感谢崔老师啊!这道题目的状态转移方程是dp[i]=min{dp[n]*2, dp[j]*3, dp[k]*5, dp[t]*7}其中n,j,k,t;谁最小谁自加1;理解很简单,就是每一步找到满足条件的数字,从前向后找啊、、Humble Num原创 2013-09-05 21:17:30 · 904 阅读 · 0 评论 -
HDU OJ 1081 To The Max
一开始做的时候没有思路,不知道该怎么做,感觉暴力肯定会超时的。。没敢做,后来看了题解感觉方法不错,就学习了。。。参考博客 http://blog.csdn.net/acm_davidcn/article/details/5834454 感谢这位大神。这题的意思就是找到子矩阵中最大的和值。这是学习的解题思路:DP 求最大和子矩阵 , 可以用最大和连续子序列的思路解 .首先 , 读数原创 2013-06-04 21:05:22 · 2276 阅读 · 0 评论 -
POJ 1837 Balance
首先说一下题意:先输入一个c,g分别代表挂钩的数目和砝码的数目。然后下一行输入挂钩的位置,负的代表在天平的左边,正的代表在天平的右边。最后一行输入砝码的重量。目的是求出有多少种可以是天平达到平衡的方案。解题的时候需要注意几点:1,砝码必须全部用完;2,挂钩不一定全部挂东西;3,每个砝码这能用一次;4,每个挂钩可以挂多个物品。解题思路:一开始的时候我是这么理解的枚举每个挂钩,然后判断当前已经原创 2013-09-18 14:35:11 · 886 阅读 · 0 评论 -
POJ 3267 The Cow Lexicon
这道题目的大体意思是:给你一个字符串,然后再给你若干个字符串,让你把给定的字符串进行删减得到的字符串,可以有下面若干个字符串组成。如:6 10browndcodwcowmilkwhiteblackbrownfarmerbrowndcodw 去掉两个d字母之后就可以由cow和brown两个单词组成。所以最少要删除2个字母。我一开始是这么想的:判断每一个子符原创 2013-09-19 15:56:02 · 901 阅读 · 0 评论 -
poj 1836 Alignment
首先说一下题意:就是给一队人进行排序,可以从左向右排可以从右向左排,只要是中间的人可以看到两边的人就行,求最少需要有多少人进行位置的调整。一开始就是以为两边求最长公共子序列、、结果悲催的是有一个小坑、、就是:83 4 5 1 2 5 4 3答案是:2 因为中间如果是最高的话也可以看到两边、、所以就是求完两遍最长公共子序列后,求出dp1[i]+dp2[j]的最大值组合,这样就可原创 2013-09-19 17:11:23 · 908 阅读 · 0 评论 -
POJ 3176 Cow Bowling
数塔问题,水题不解释啊、、今天过节过了算是图开心吧、、呵呵呵呵Cow BowlingTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 12226 Accepted: 8060DescriptionThe cows don't use ac原创 2013-09-19 20:12:59 · 951 阅读 · 0 评论 -
POJ 1276 Cash Machine
先说一下题意:给你两个数cash和N。cash代表你最多会换得多少钱,N代表有n种钱,然后输出n组数据,每组数据有两个数分别代表钱的数目与面值。最后输出最大的可以换得的典型的多重背包,但是悲催的是竟然各种超时,各种超内存啊、、我的算法有问题,每次枚举的时候都会造成重复。。。后来看了我师傅写的,加了一个计数就OK了啊、、、Cash MachineTime Limi原创 2013-09-18 19:02:48 · 897 阅读 · 0 评论 -
POJ 1260 Pearls
大体题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠。注意的点:1. 要求要买的珍珠的数量是一定的;2.所买的珍珠的质量允许提高,但不允许下降(即可以用高质量珍珠替代低质量)3.输入时,后输入的珍珠价格一定比前面输入的要贵dp的过程是以每种珍珠为一个阶段进行dp,最优子问题是:如果购买的珍珠过少而手续费很多就会造成浪费。所以枚举第i种原创 2013-09-21 10:55:29 · 827 阅读 · 0 评论 -
codeforces C. Find Maximum
先说一下题意,给你一个数字n,然后给你n个数,和一个n位的二进制的数。求从0到这个二进制数表示的十位数m之间,所有的十进制数变成的二进制数与数组中的元素进行乘积所组成的数字和的最大值。可能说的有点拗口。。。举例说明吧:5 17 0 10 2 1 11010 n为5,数组中的元素依次是17 0 10 2 1 ,二进制数是11010就是十进制中的11;从十进制0到11中找到一个数字,使原创 2013-10-11 11:49:19 · 1334 阅读 · 0 评论 -
Codeforces Round #212 (Div. 2) C. Insertion Sort
这道题的题意是给你一个数字n然后再给你n个数字,他们都是0-n-1的数字。求这n个数字,再交换任意两个数字之后再进行冒泡排序需要交换数字的次数。首先肯定不是暴力、、、一开始没做出来,是鹏哥教的我、、、、太笨了啊,不解释啊、、、大家还是看他的吧、、、http://blog.csdn.net/rowanhaoa/article/details/16341489C. Insertio原创 2013-11-15 17:29:54 · 1371 阅读 · 1 评论 -
POJ 1080 Human Gene Functions
说一下题意就是给你两串字符串,然后给你一个字符匹配的列表,可以在字符串中添加字符'-',然后使得整个字符串的和最大。解题思路是:判断i串之前是空的,j串之前是空的,i,j之前利用过、、这三个状态转换而来:dp[i][j] = max(dp[i-1][j]+judge(s1[i-1], '-'), dp[i][j-1]+judge('-', s2[j-1]), dp[i-1][j-1] + ju原创 2013-09-23 20:40:12 · 995 阅读 · 0 评论 -
HDU 2602 OJ Bone Collector
Bone CollectorTime Limit: 1000MS Memory limit: 65536K题目描述 Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bon原创 2013-05-21 21:24:01 · 2301 阅读 · 0 评论 -
POJ 1159 Palindrome
题目的大意是:给你一个长度为n的字符串,让你判断一下最少加入几个字符之后会使得字符串成为一个回文字符串。题意很简单,其实解法也很简单啊,就是正向数组,与反向数组求一个最长公共子序列,因为这样就可以找到已经匹配了的字符了啊,剩下的就是需要添加的啊。就是一个求最公共子序列,然后输出剩下的值。但是比较坑的是int型的5000*5000的数组会超内存的啊、、听说用short 可以水过去啊、、但是崔原创 2013-09-24 21:21:27 · 904 阅读 · 0 评论 -
poj 2151 Check the difficulty of problems
首先说一下这道题时无意中发现的啊、、不知道怎么搞得啊他竟然出现在了我们训练计划中的查找法中了啊、、不过无所谓啊,做做也没有什么坏处啊、、、一开始看题的时候理解错题意了啊,一开始我是这么算的啊P1 = (1 - (1-0.9)*(1-0.9)) * (1-(1-1)(1-0.9)); P2 = 1- (1-(0.9 * 0.9)) * (1-(1*0.9));P1*P2 = 0.97119与答案原创 2013-08-21 11:07:33 · 2943 阅读 · 0 评论 -
Codeforces Round #214 (Div. 2) C. Dima and Salad
题目的大体意思就是:就是给了你两个数组:a,b。然后让你从a数组中选取任意的几个数字,得到的和为sum1,然后除以相应b数组和sum2,要求sum1/sum2==k,让你求出满足要求的a数组中sum1最大的为多少,如果不存在这样结果,那么就输出-1。一开始理解错意思啦、写完了发现不对、、、后来尝试这处理a的和但是对应的b不一定是唯一的、、、然后卡住了,就搜了一下解题报告,发现有一个人竟然和我卡原创 2013-11-25 22:04:26 · 1088 阅读 · 0 评论 -
HDU 1421 搬寝室 (dp+小贪心)
这个题目的意思就不解释了啊,就是找到最优的解,使消耗的体力最小。先说状态转移方程式:dp[i][j] = min(dp[i-1][j], dp[i-2][j-1]+(w[i]-w[i-1])^2)。解释一下:这里面的i代表当前取到了第几件物品,j表示当前已经选择了j对。dp[i-1][j]这里表示的是当前这件物品i没有选择,而最小的价值是之前i-1的状态延续过来的。dp[i-2][j-1]+(原创 2014-02-21 19:13:28 · 819 阅读 · 0 评论 -
HDU 1203 I NEED A OFFER! (dp+概率)
这题其实没用到什么概率公式啊,就是相互独立事件求一个对立的事件。状态转移方程:dp[j] = min(dp[j], dp[j-f[i].w]*(1-f[i].p))。以所花费的钱dp,求出来录取不到的小值,反过来就是可以录取到的最大值。#include #include #include #include #include #include #include #include原创 2014-02-21 19:44:01 · 918 阅读 · 0 评论 -
HDU 2159 FATE (多重背包)
就是一个裸的多重背包,竟然想复杂了啊。状态转移方程:dp[i][j] = max(dp[i][j], dp[i-lose[k]][j-1]+add[k]);FATETime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 63原创 2014-02-21 20:46:03 · 765 阅读 · 0 评论 -
HDU 1160 FatMouse's Speed(求最长递减序列+记录路径)
这道题的意思是:有人认为老鼠越胖跑得越快。现在给你n个老鼠,给出每个老鼠的重量和速度。按重量排序后求出来有多少老鼠的的速度是一个递减序列。看看是否那个人是否正确。输出序列的长度,还得输出这个序列上老鼠原来在输入时的位置。所以要用一个数组保存前驱。注意:Special JudgeFatMouse's SpeedTime Limit: 2000/1000 MS (Java/Ot原创 2014-02-23 09:47:31 · 846 阅读 · 0 评论 -
HDU 1208 Pascal's Travels(记忆化搜索)
记忆化搜索这种东东以前好像没写过,这是第一次写吧,其实也挺好理解的啊。就是一个dp与搜索的结合,dfs后保存每一步的值,然后输出就行了啊。Pascal's TravelsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1原创 2014-02-23 15:15:10 · 858 阅读 · 0 评论 -
HDU 1158 Employment Planning (简单二维dp)
先说一下题意:就是有一个工程要干m月,每个月需要num[i]个工人,每个工人雇佣、工资、解雇,分别需要花费,h、s、f的钱,让你求出这m个月怎么安排,才会使得花费最小。状态转移方程很好推啊,就是这个月的花费可以有三种情况组成。1.延续上月的,不再雇佣,不在解雇工人。发工资;2.解雇一部分人,付解雇的钱,再发工资;3.再雇佣一部分人,再发工资;所以方程式是:if(k > j) dp[原创 2014-02-22 14:33:28 · 968 阅读 · 0 评论 -
POJ 2750 Potted Flower(线段树+dp)
题目大意:给定一个环形序列,每次修改一个元素,输出环上的最大连续子列的和。解题思路:用线段树记录当前区间的非空最大子列和当前区间的非空最小子列。如果环上的数都是正整数,答案是:环上数的总和-根结点的非空最小子列;这里面要注意的是:建树的时候要一遍输入一遍递归。Potted FlowerTime Limit: 2000MS Memory Limit:原创 2014-02-22 19:07:57 · 1033 阅读 · 0 评论 -
从崔老师那里弄的一个dp列表好好刷刷、、跟着崔老师学dp啊--
经典入门题:最长上升子序。O(n^2)的。。话说n*log(n)的还不会呢。。。SDUT 1299 数塔 HDU 2084 数塔 最长公共子序 HDU 1159 Common Subsequence 最大子段和 HDU 1003 Max Sum 编辑距离 SDUT 1225 编辑距离 杭电的DP专题 HDU 1058转载 2013-09-07 09:33:22 · 2266 阅读 · 0 评论 -
HDU 1864 最大报销额 01背包问题
就是按照要求把能报销的单子找出来,然后就是对这些满足报销的单子进行01背包的处理,这个单子是报销还是不报销,相当于放还是不放。状态转移方程是:dp[j] = max(dp[j], dp[j-1]+w[i]);最大报销额Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other原创 2014-02-11 14:19:13 · 1032 阅读 · 0 评论 -
HDU 1244 Max Sum Plus Plus Plus(二维dp)
一开始想到的状态转移方程是:dp[i][j] = max{dp[i-1][j], dp[i-1][j-1] + sum[k]-sum[k-l[j]]。表示从第i个数字中,已经选择了j个关系。枚举k来找到最优问题。但是这么是不对的啊,因为这样考虑的话你得考虑一下i-1个结束的位置。否则的话就会有重复子区间,不符合要求啊。后来 看了网上有一人把状态转移方程是这么写的:dp[i][j] = max(原创 2014-02-24 08:21:41 · 988 阅读 · 0 评论 -
HDU 1224 Free DIY Tour(简单dp?+记录路径)
说是dp感觉还不若说是最短路的求法啊,就是每个城市选不选则的依据是之前的是否比他还大。其实感觉就是bfs找到最大值,再记录路径。为毛在HDU的难度还是2啊。不理解啊。。。怎么分的啊、、、Free DIY TourTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T原创 2014-02-23 16:26:45 · 807 阅读 · 0 评论 -
HDU 1284 钱币兑换问题 完全背包
和上一篇博客相同,就是注意要用到大数,但是我数组开打了开成1000000竟然超时了一次啊。。。。sad。。。钱币兑换问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4740 Accepted Submissio原创 2014-02-11 10:42:28 · 962 阅读 · 0 评论 -
HDU 2546 饭卡 01背包+贪心
把5块钱单独拿出来买最大的东西,这样可以使的余额最小,然后在其他的n-1件物品中以钱数开始dp,找到可以购买到的最大的价值,然后减去就OK了啊。dp的状态转移方程:dp[j] = max{dp[j], dp[j-w[i]] + w[i]]};PS:另附ZP说的另一个版本的,是通过标记的方法找到可以到达的最小的余额。。。饭卡Time Limit: 5000/1000 MS (J原创 2014-02-11 15:43:11 · 1014 阅读 · 0 评论