DP
文章平均质量分 60
Heart.
这个作者很懒,什么都没留下…
展开
-
DP 动态规划 Problem A 1001 最长子序列
Problem A ID:1001 简单题意:给出一组含负数的数,求最大子序列,并求出此序列的首尾位置。解题思路形成过程:感想:代码:#include #include #include using namespace std;int a[2000001];int cmax[2000001];int tag[20原创 2016-04-26 22:59:57 · 416 阅读 · 0 评论 -
DP 动态规划 Problem S 1019 简单背包
Problem S ID:1019简单题意:解题思路形成过程:感想:代码:原创 2016-05-28 19:52:12 · 495 阅读 · 0 评论 -
DP 动态规划 Problem E 1005 最大递增子序列
Problem E ID:1005简单题意:提供无限个若干种长为xi,宽为yi,高为zi的砖块,砖块可以调整方向(如长也可以为宽或高)。若一个砖块的长和宽分别比另一个砖块的长和宽小,则此砖块可以垒在后一个砖块的上面。问:最大可以垒多高?解题思路形成过程:实际上是一种条件稍复杂些的最大递增子序列问题。 每种砖块的高共有三种情况(原创 2016-05-16 22:57:24 · 555 阅读 · 0 评论 -
DP 动态规划 Problem R 1018 完全背包
Problem R ID:1018简单题意:存钱罐空着的时候重E,满的时候最多重F,有T种硬币(无限个),给出每种硬币的价值P和重量W,求存钱罐满的时候里面硬币的最小总重量。解题思路形成过程:因为要求最小的总重量,每个DP过程求的也就是最小值(min),且DP数组每一个元素的初始值要设置的足够大。 因为是完全背包问题,内层循环原创 2016-05-29 18:27:51 · 669 阅读 · 0 评论 -
DP 动态规划 Problem Q 1017 背包问题
Problem Q ID:1017简单题意:物品总数为N,背包的体积为V,给出每个物品的价值和体积,求出背包最多能放多少价值的物品。解题思路形成过程:基础的背包问题。 用一个二维数组dp[i][j]来进行遍历,i代表前i个物品,j代表放前i个物品占用的体积,dp[i][j]则代表放前i个物品,占用j的体积时背包中的最大价值。原创 2016-05-17 11:39:48 · 460 阅读 · 0 评论 -
DP 动态规划 Problem B 1002 求最长上升子序列的长度
Problem B ID:1002简单题意:给出X和Z两个字符串,求最长上升子序列的长度。解题思路形成过程:利用矩阵。X字符串中的各字符依次作为行标,Z字符串中的各字符依次作为列标。 从第一行第一列开始逐行遍历:如果当前位置对应的两个字符相同,则在这个位置记录"前一行前一列"的对应的数+1;原创 2016-05-07 23:35:26 · 3358 阅读 · 0 评论 -
DP 动态规划 Problem W 1023 背包
Problem W ID:1023简单题意:共有n万元,有m个学校可申请(0,给出每个学校的申请费用和拿到offer的概率,求至少得到一份offer的最大概率。解题思路形成过程:明显的背包问题,相比上一个问题 Problem Q n和m的范围都比较大,如果用二维数组(dp[10000][10000])会超出限制,所以必须进行优化。原创 2016-05-19 11:09:25 · 447 阅读 · 0 评论 -
DP 动态规划 Problem V 1022 反向考虑的背包
Problem V ID:1022简单题意:某人准备抢银行,可以承受的最大被抓的概率为p(总共),共有n个银行可抢,分别给出各个银行所拥有的money:mi,抢各个银行被抓的概率pi。求可以抢到的最大金额。解题思路形成过程:因为概率值的范围为0~1,即有小数,所以必须反向来考虑。 可以承受的最大被抓的概率为p,即:如果逃跑的概原创 2016-05-31 22:23:55 · 1750 阅读 · 0 评论 -
动态规划总结
动态规划总结 所谓动态规划,就是先求取局部最优解,最后来得到全局最优解。或者是,先求得当前阶段的最优解,最后得到全部阶段结束后的最优解。 当求局部最优解时,也不能只是仅仅着眼于局部,而是考虑着全局,在符合全局的目标和条件下来求解局部最优解(这点有点像现实中的规划)。 既然重点是求局部,那么要弄清从哪里开始,到哪里结束。更要弄清开始时怎么设计,结束时和中间部分又是怎么设计,原创 2016-05-31 23:13:17 · 998 阅读 · 1 评论 -
DP 动态规划 Problem D 1004 丑数
Problem D ID:1004简单题意:不能被2,3,5,7之外的其他素数整除的数,称为丑数。1为第一个丑数。给出n,求第n个丑数。解题思路形成过程:将所有的丑数放到数组a中,则a[0]=1。 设置4个游标(a2,a3,a5,a7),分别是含有因子为2、3、5、7的游标,4个游标的初始位置均为0。原创 2016-05-16 08:15:53 · 422 阅读 · 0 评论 -
DP 动态规划 Problem C 1003 最大递增子段和
Problem C ID:1003简单题意:给出一排带有数字的棋子,每个棋子只能从左往右跳,且只能往比现在的数字更大的棋子上跳,跳时可以跨越多个棋子直达另一个。求最大的路径和。解题思路形成过程:题意实际上是求最大递增字段和。 利用dp,用s数组存放每个棋子的数字,dp数组存放以当前棋子为终点时最大路径和。原创 2016-05-14 22:58:13 · 676 阅读 · 0 评论 -
DP 动态规划 Problem H 1008 左上角到右下角
Problem H ID:1008简单题意:一个两维的方格阵列,从左上角走到右下角,每个格子里都有一个数字K ( |K|(x,y)走)有三种走法:向下走一个格(x+1,y)、向右走一个格(x,y+1)或者(x,y*k) ,k为大于等于2的整数,走过的数字将累加。问:到达右下角时最大值为多少?解题思路形成过程:一个比较简答的dp题,先列遍历,再对原创 2016-05-24 12:44:48 · 793 阅读 · 0 评论 -
DP 动态规划 Problem F 1006 数塔问题
Problem F ID:1006 简单题意:给出一个数塔,从顶层走到底层,每一步只能走到相邻的结点,求经过的结点的最大数字之和。解题思路形成过程:从上到下,从倒数第二层开始,每一个结点均有两个选择:自己本身的数加上左儿子或者自己本身的数加上右儿子,两者的数求取最大值,最大值便是此结点的最大值。按照此方法,从倒数第二次依次遍历到最顶层。此时最顶层的数便是从原创 2016-04-30 23:01:55 · 922 阅读 · 0 评论 -
DP 动态规划 Problem M 1013 母牛问题
Problem M ID:1013简单题意:初始有一头母牛,每年年初生一头母牛,所有新出生的母牛从出生后的第四个年头开始,每年都生一头母牛。求第n年共有多少头母牛。解题思路形成过程:使用两个数组,一个数组a存放(所有)当年出生的母牛数,另一个数组b存放(所有)从第一年到当年的总母牛数。 n n>3时,原创 2016-05-01 17:03:27 · 605 阅读 · 0 评论 -
DP 动态规划 Problem J 1010 上楼梯问题
Problem J ID:1010简单题意:走楼梯,从第1级走到第M级,每次上一级或上两级。问:到达M级共有多少种方式。解题思路形成过程:用一个数组a来储存到达每一级的总方式数,由题意可得:a[1]=1;a[2]=1;a[3]=2; 状态转移方程为:a[i]=a[i-2]+a[i-1]; (i>=4)。原创 2016-05-01 17:37:46 · 671 阅读 · 0 评论 -
DP 动态规划 Problem L 1012 铺骨牌
Problem L ID:1012简单题意:向一个2*n的长方形方格里铺1*2的骨牌,方格须铺满。给出n,求铺放方案总数。解题思路形成过程:用一个数组a来储存不同n值的总方式数,由题意可得:a[1]=1;a[2]=2; 当n>=3时,状态转移方程为:a[i]=a[i-1]+a[i-2];原创 2016-05-01 18:25:51 · 529 阅读 · 0 评论 -
DP 动态规划 Problem K 1011 蜜蜂爬蜂房
Problem K ID:1011简单题意:蜜蜂只能爬向右侧相邻的蜂房,计算蜜蜂从蜂房a爬到蜂房b的可能路线数。 解题思路形成过程:t=b-a为相隔的蜂房数。 用一个数组a来储存不同t值对应的可能路线数,a[1]=1,a[2]=2;原创 2016-05-01 21:29:30 · 938 阅读 · 0 评论 -
DP 动态规划 Problem N 1014 折线分割平面
Problem N ID:1014简单题意:一条折线(一个顶点,两条射线)可以将平面(平面无穷大)分割成两个部分,问:n条折线最多能将平面分割成几个部分?解题思路形成过程:若使第n条折线将平面分割的最多,前n-1条折线每一条都须对这新一条折线参与分割。 n-1条折线有2*(n-1)条直线,每条直线最多可以割出两个线段(即共割出原创 2016-05-02 21:12:21 · 486 阅读 · 0 评论 -
DP 动态规划 Problem O 1015 二进制十进制转换
Problem O ID:1015简单题意:给出一个1000以内的十进制数,求其二进制形式。解题思路形成过程:如图所示: 每组的前一半与后一半各服从相同的规律:前一半:a[i]=head+a[i-t1]%tail;后一半:a[i]=head+a[i-t2];(head:此组数据的基数,tail:tail=head/10,i-t原创 2016-05-03 22:23:06 · 916 阅读 · 0 评论 -
DP 动态规划 Problem P 1016 不向后走的走路方案数
Problem P ID:1016简单题意:在一个无限大的平面,只能向前、向左、向右走,不能向后走,走过的路不能再走。给出走的步数n(n解题思路形成过程:设F(n)为走n步的总方案数,a(n)为走n步最后一步为向前走的总数,b(n)为走n步最后一步为向左走或向右走的总数。 可以推出:①F(n)=a(n)+b(n);原创 2016-05-08 20:50:21 · 796 阅读 · 0 评论