DP
浪子小黄人
这个作者很懒,什么都没留下…
展开
-
A Spy in the Metro UVA 1025 DP
A - A Spy in the MetroTime Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %lluSubmit StatusDescriptionSecret agent Maria was sent to Algorithms City to carry out原创 2014-08-11 15:36:22 · 915 阅读 · 0 评论 -
Coins (poj 1742 && hdu 2844 DP)
题意:给n张不同面值的钱,每种面值的钱都有一定数量,问用这些钱能够凑出多少种不同的面值,并且面值要在1~m内。输出种数。思路:dp[i]表示i面值的钱是否能够凑出来(0或1)。原创 2015-03-14 10:47:19 · 947 阅读 · 0 评论 -
Monkey and Banana (zoj 1093 动态规划)
题意:有n种长方体,数量不限,把它们堆起来,下面的底要严格大于上面的,问最高能堆多高。思路:每种长方体可以预处理成三种长方体,然后按照底面从大到小排个序,然后的操作感觉就有点想LIS了,dp[i]表示到第i个长方体的最高高度。原创 2015-11-21 15:51:30 · 436 阅读 · 0 评论 -
Mondriaan's Dream (zoj 1100 状压dp)
题意:一个n*m的方格,要求用1*2的砖把它铺满,问有多少种铺法。思路:dp[i][j]表示第i行在状态j下所有合法的铺法总数。第i行的状态可以由第i-1行推得,且易知第i-1行的空缺只能由第i行对应位置用竖着的砖来补上。原创 2015-11-21 19:31:55 · 568 阅读 · 0 评论 -
点集配对问题 状压DP
大白P61,空间里有n个点P0,P1,...,Pn-1,把它们两两配对,要求所有的点对距离之和最小。其中n分析:dp[s]表示集合s配对后的最小距离之和,状态转移方程为dp[s]=min(dp[s],dp[s^(1注意这里i是不需要枚举的,因为i最后都是要配对的,无须枚举。代码:#include #include #include #include #include #i原创 2016-01-26 17:52:25 · 655 阅读 · 0 评论 -
Most Powerful (zoj 3471 状压dp 点集配对)
题意:n中元素,现在两种不同的元素之间可以发生反应并且放出能量,其中一种元素随之消失,现在给出每两种元素之间发生反应产生的能量值关系,求使得这n种元素反应完后能得到的最大能量值。思路:n的范围比较小,可以想到状态压缩,dp[s]表示元素集合s反应后能得到的最大能量值,那么状态转移方程为dp[s]=max(dp[s],dp[s^(1<<j)]+a[i][j])。原创 2016-01-26 20:20:17 · 375 阅读 · 0 评论 -
NYOJ832 合并游戏 状压DP+记忆化搜索
思路:数据较小,想到状态压缩,110010中的0表示该位置的石子已经合并了。原创 2016-02-11 15:33:11 · 531 阅读 · 0 评论 -
NYOJ 1030Yougth's Game[Ⅲ] 记忆化搜索
思路:dp[i][j]表示区间在[i,j]内先手能取得的最大值。原创 2016-02-11 18:17:11 · 643 阅读 · 0 评论 -
Vawio Sequence (NYOJ 763 LIS变形)
题意:n个数的序列,求长度为奇数的最大序列,这个序列满足前n+1个数单调递增,后n+1个数单调递减,且每个数各不相同。思路:正反求两次LIS即可,要用二分法。原创 2016-01-31 13:53:39 · 448 阅读 · 0 评论 -
NYOJ 1070 诡异的电梯【Ⅰ】 DP
诡异的电梯【Ⅰ】时间限制:1000 ms | 内存限制:65535 KB难度:3描述新的宿舍楼有 N(1≤N≤100000) 层 and M(1≤M≤100000)个学生. 在新的宿舍楼里, 为了节约学生的时间也为了鼓励学生锻炼身体, 所以规定该宿舍楼里的电梯在相邻的两层之间是不会连续停下(即,如果在第2层停下就不能在第3层停下。).所以,如果有学生在相原创 2016-02-02 12:10:30 · 563 阅读 · 0 评论 -
NYOJ 1204 魔法少女 简单DP
思路:dp[i][0]表示不用魔法到达第i层所用的最短时间,dp[i][1]表示用魔法到达第i层所用的最短时间。因为魔法不能连续用,所以dp[i][1]=min(dp[i-1][0],dp[i-2][0]);dp[i][0]=min(dp[i-1][0],dp[i-1][1])+h[i];原创 2016-02-02 12:44:45 · 929 阅读 · 0 评论 -
Cheapest Palindrome (poj 3280 区间DP)
题意:长度为M的字符串,可以增加或删除字符,使其构成回文,增加或删除不同的字符有不同的花费,求最小花费。这位大神讲的很详细,看后收获很大~原创 2015-03-10 20:01:07 · 563 阅读 · 0 评论 -
Milking Time (poj 3616 简单DP)
题意:给个时间长度n,m个工作时间段和每个时间段能完成的工作量,一次只能做一个工作并且一旦开始做就要把它做完,要求选择的两个工作时间段之间至少相差r时间(中间需要休息嘛)求选择那些工作n时间内能完成的最大工作量。输出最大值。思路:先按工作的结束时间从小到大排序,再动态规划。dp[i]表示从头开始取到第i段所获得的最大值。二重循环,如果第i段之前的某个段的结束时间加上r小于等于第i段的开始时间,则更新dp[i]。原创 2015-03-10 12:22:09 · 2549 阅读 · 0 评论 -
Uva 11584 - Partitioning by Palindromes dp
Problem H: Partitioning by PalindromesWe say a sequence of characters is a palindrome if it is the same written forwards and backwards. For example, 'racecar' is a palindrome, but 'fastcar' is not原创 2014-11-09 16:59:56 · 1265 阅读 · 0 评论 -
Revenge of LIS II (hdu 5087 LIS)
题意:求第二长的绝对递增子序列的长度。思路:每次求dp[i]的时候,用flag[i]记录有多少种情况来构成此最优解。求出ans=max(dp[1],dp[2]...dp[N]).再求出 sum,sum为最长上升子序列的个数,若sum!=1 说明最优解有多种可能的构成方式。输出ans即可。若sum==1 输出ans-1。原创 2014-11-02 16:26:40 · 750 阅读 · 0 评论 -
FatMouse and Cheese (hdu 1078 记忆化搜索)
题意:给出n*n的数字矩阵,从(0,0)出发,走的下一步格子上的数要大于当前格子上的数,并且每次可以沿直线前进最多k个位置,也就是每次有4*k个选择,问最后所有数之和的最大值。思路:记忆化搜索。原创 2015-03-19 11:49:56 · 538 阅读 · 0 评论 -
Largest Rectangle in a Histogram (poj 2559 && hdu 1506 矩形系列 迭代法)
题意:给出n个矩形的高,问它们能组成的最大矩形的面积是多少。思路:定义两个数组 l[i] 和 r[i] ,分别记录从 i 点能向左向右扩展的最大位置。若a[i]<=a[ l[i] - 1 ],则 l[i] = l[ l[i] - 1](如果i可以扩展到l[i]-1处,那么在计算i之前l[i]-1处的l[l[i]-1]已经计算出来了,就可以直接令l[i]=l[l[i]-1]了);同理,若 a[i]<=a[ r[i] - 1 ],则 r[i] = r[ r[i] - 1]。这样做充分利用了之前已经计算出来的数原创 2015-03-19 11:37:48 · 597 阅读 · 0 评论 -
Ant Counting (poj 3046 分组背包)
题意:给出T个数字,编号1~T,每个数字有N[i]个。用这些数字组成一个序列,最后问长度在S~B之间的不同序列有多少种。思路:分组背包。每个蚂蚁家族为一个分组,在每个分组里的选择有N[i]种(选1~N[i])。背包九讲原创 2015-03-19 20:22:02 · 660 阅读 · 0 评论 -
Apple Catching (poj 2385 简单dp)
题意:有两棵苹果树,每一分钟其中一棵会掉一个苹果,给出T分钟内哪个树会掉苹果,人在两棵苹果树之间来回跑接苹果,问在最多跑W次下最多能接到多少苹果。思路:转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+count。dp[i][j]表示在第i分钟跑j次最多能接到的苹果数。count:当j为偶数时,人又跑回了1,此时count=(a[i]==1?1:0)即2-a[i];j为奇数时跑到了2,count=(a[i]==2?1:0)即a[i]-1.原创 2015-03-07 15:55:40 · 792 阅读 · 0 评论 -
Sumsets (poj 2229 简单dp)
题意:给一个整数n,求解该整数n有多少种由2的幂次之和组成的方案。原创 2015-03-07 16:15:45 · 472 阅读 · 0 评论 -
Max Sum (hdu 1003 简单DP水过)
题意:给出n个数的序列,求出最大的子串和,并输出起点和终点。思路:dp[i]表示以i为结尾的最大子串和。原创 2015-03-17 10:19:44 · 842 阅读 · 0 评论 -
I NEED A OFFER! (hdu 1203 01背包)
题意:手里有n万元,这里有m所学校,想用n万元报学校拿到offer,m个学校都有一个申请费用和能得到offer的概率,问至少得到一个offer的最大概率是多少。思路:首先解释一下样例:共10万元,3所学校(这里编号1,2,3),得到offer概率最大的的情况是:报学校2和3,只拿到学校1的offer,只拿到学校3的offer,两个学校的offer都拿到,和=0.2*(1-0.3)+(1-0.2)*0.3+0.2*0.3=0.44.但是如果这样求的话很麻烦,我们可以转化成求一个offer都拿不到的最小概率,原创 2015-03-17 16:21:35 · 655 阅读 · 0 评论 -
免费馅饼 (hdu 1176 简单DP)
题意:有0~10共11个坐标位置,现在有n个馅饼掉在这11个位置,告诉每个馅饼落下的时刻t和坐标x,且位于x出的人只能接住x-1,x,x+1这三个位置的馅饼,问最多能接住多少馅饼。思路:dp[i][j]表示 i 时刻在 x 处能接住的最多馅饼数。dp初始化为0,先计算出i时刻j位置有多少馅饼,这样感觉就转化成数塔问题了,可以倒着时间DP,最后答案就是dp[0][5];也可以正着,最后答案是dp[T][0~10]中的最大值(T是最大时间),正着时要注意控制起点要从5开始。原创 2015-03-17 09:10:47 · 1359 阅读 · 0 评论 -
NYOJ 195 飞翔 LIS变形
思路:其实仔细想就是求LIS。记得先排序。原创 2016-02-02 17:03:11 · 596 阅读 · 0 评论