![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划(DP)
文章平均质量分 53
不吸血的Vampire
这个作者很懒,什么都没留下…
展开
-
动态规划(DP)——HDU1081、PKU1050 To The Max 最大子矩阵问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081题目大意:给定1个n*n矩阵,求最大子矩阵(矩阵元素之和最大)。解题思路:这个题目和那个最大连续子序列是比较像的,只是维数不同而已。如果能把二维的问题转化成一维的,那么这个问题就迎刃而解了。二维转一维的方法就是枚举任意两行,然后求出这转载 2013-11-16 22:05:14 · 693 阅读 · 0 评论 -
HDU 3555 数位DP
题意:给你个n#include#include#includeusing namespace std;#define ll __int64int a[100];ll dp[100][3];ll dfs(int pos, int st, bool flag){ if(pos==0) return st==2; if(flag&&dp[pos][st原创 2014-04-08 19:25:47 · 387 阅读 · 0 评论 -
HDU 4283 You Are the One (区间DP)
题意:有 n 个人,每个人有一个diaosi值a[i],如果第 i 个人排在第 k 位置,则他的愤怒值就为a[i]*(k-1);过程中有一个黑屋子,可以把人暂时放到黑屋子里。求总的愤怒值最小;区间DP:对dp[i][j],我们考虑i到j的(j-i+1)个人,对于第i个人我们可以假设他在第k个位置,则前面就有k-1个人在他前面,j-k个人在他后面,所以dp[i][j]=m原创 2014-05-10 16:58:38 · 621 阅读 · 0 评论 -
ZJU 3331 神奇的双塔DP
#include#include#include#include#include#define inf 2139062143#define M 100using namespace std;int n,x[120],y[120];int dp[210][250];int main(){ int t; cin>>t; while(t--原创 2014-04-11 11:17:04 · 905 阅读 · 0 评论 -
HDU 1505 Largest Rectangle in a Histogram && HDU 1506 City Game(动态规划)
1506题意:给你连续的直方图(底边边长为1),求连续的矩阵面积。对每个直方图,分别向左向右进行扩展。#include#include#include#include#include#include#include#include #include #include#includeusing namespace std;#define原创 2014-07-16 20:23:21 · 592 阅读 · 0 评论 -
HDU1078:记忆搜索(dp+dfs)
题意:在n*n的格子上,每个点各有若干块奶酪,胖老鼠从左上角出发,每次最多走k步(只能直走),且下一点必须比这一点的奶酪多,问最多能吃到多少块奶酪。#include#include#include#include#include#includeusing namespace std;#define E 2.718281828459int dp[105][105];int原创 2013-11-16 22:01:39 · 685 阅读 · 0 评论 -
CodeForces 256A (dp)
A. Almost Arithmetical Progressiontime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputGena loves sequences of n原创 2014-07-24 21:05:06 · 900 阅读 · 0 评论 -
HDU 4405 Aeroplane chess (概率DP求期望)
题意:有一个n个点的飞行棋,问从0点掷骰子(1~6)走到n点需要步数的期望其中有m个跳跃a,b表示走到a点可以直接跳到b点。dp[ i ]表示从i点走到n点的期望,在正常情况下i点可以到走到i+1,i+2,i+3,i+4,i+5,i+6 点且每个点的概率都为1/6所以dp[i]=(dp[i+1]+dp[i+2]+dp[i+3]+dp[i+4]+dp[i+5]+d原创 2014-07-09 16:31:30 · 800 阅读 · 0 评论 -
HDU 1160 FatMouse's Speed (最长有序的上升子序列)
题意:给你一系列个w,s,要你找到最长的n使得W[m[1]] and S[m[1]] > S[m[2]] > ... > S[m[n]]即在这n个w,s中满足w[i]s[j],要求:体重严格递增,速度严格递减,原始顺序不定首先将s从大到小排序,即顺数固定后转化为最长上升子序列问题.案例:6008 13006000 210050原创 2014-08-05 10:55:53 · 624 阅读 · 0 评论 -
HDU 4050 wolf5x (概率DP 求期望)
题意:有N个格子,1~N,起点在0,每个格子有一个状态(0,1,2,3),每次可以跨[a,b]步,问走完N个格子需要步数的期望,每次尽量走小的步数,即尽量走a步,不能则走a+1,……状态0意味着你不能踏进对应的网格。 状态1意味着你可以步入网格用你的左腿。 状态2意味着你可以步入网格用你的右腿。 状态3意味着你可以进入网格用任何你的腿,而接下来的步骤中,您可以使用任何的原创 2014-07-14 15:13:08 · 779 阅读 · 0 评论 -
HDU 3008 Warcraft
题意:一个人有100点血和100点魔法,Boss有100点血,人有n个技能,每个技能对Boss有a[i]点伤害,且会消耗b[i] 的点魔量,人每秒会有t秒魔法恢复(最大为100)Boss每秒有q点伤害,问人是否能先击败Boss若能,需要几秒。dp[i][tmp]:在第 i 秒 剩余 魔法为 tmp 时的伤害,tmp = 第i秒拥有的魔法 j - a[原创 2014-08-06 22:19:52 · 819 阅读 · 0 评论 -
HDU 1158 Employment Planning
题意:有一公司要工作n个月每个月需要至少p[i]个人工作,每个人的工资固定位m,每雇佣一个人要花费h,每炒掉一个人要花费f。求完成n个月工作,公司最小的花费。思路: Dp[i][j]为前i个月的留j个人的最优解;p[i]j>Max{p[i]}之后无意义,无谓的浪费 记Max_n=Max{p[i]};Dp[i-1]中的每一项都可能影响到Dp[i],即使p[i-1]所以利用原创 2014-08-06 16:23:20 · 586 阅读 · 0 评论 -
HDU 2059 龟兔赛跑
题意:中文题,不解释。思路:将长度为L分为n+2段:0,p[1],p[2]……,p[n],L.dp[i]为乌龟到第 i 段的最小时间,乌龟可以再0~i-1段选择充电后到达 i 的最小时间,然后分类讨论下。#include#include#include#include#include#include#include#include #incl原创 2014-08-06 15:11:28 · 518 阅读 · 0 评论 -
HDU 4539 郑厂长系列故事——排兵布阵 (状态压缩DP)
中文题,题意不再累赘。思路:对于第 i 行的放士兵,影响它的只有第 i-1 行和 i-2 行,所以暴力枚举符合这三行的状态 state[i],state[j],state[k]. 接下来就是二进制的巧妙应用了。具体题解看代码注释!!!#include#include#include#include#include#include#inc原创 2014-08-13 16:23:41 · 523 阅读 · 0 评论 -
HDU 3652 数位DP
题意:找出原创 2014-04-08 20:37:17 · 423 阅读 · 0 评论 -
HDU 2089 数位DP
题意:不要62 和 4;思路:dp[i][0]原创 2014-04-07 22:24:38 · 457 阅读 · 0 评论 -
ZJU3623
题意:敌人有一座建筑物有L的血量。现在你有一座兵工厂,兵工厂能造一些武器,这些武器需要ti的时间制造,然后每秒的攻击力为di。兵工厂不能同时造多个武器,最少需要多少秒能把建筑物打掉思路:dp[i]为i秒内最多能打掉多少血dp[i + ti] = max(dp[i + ti], dp[i] + i * di)也就是ti的时间用来造塔,然后i时间用来攻击再加上i时间内的原创 2013-11-16 22:00:08 · 658 阅读 · 0 评论 -
HDU1421
题意:给定n个物品,每个物品有重量,从中选出m对,使得这m对物品重量差的平方和最小。#include#include#include#include#include#include#include#includeusing namespace std;#define inf 2147483646#define ll long long#define N 10001#defi原创 2013-11-16 22:00:56 · 693 阅读 · 0 评论 -
HDU1028(母函数)
整数划分的递归算法:int split(int n, int m){ if(n < 1 || m < 1) return 0; if(n == 1 || m == 1) return 1; if(n < m) return split(n, n); if(n == m) return (split(n, m - 1) + 1); if(n > m) return原创 2013-11-16 22:03:27 · 753 阅读 · 0 评论 -
HDU2955 01 背包变形
dp[ i ][ j ]:表示从前 i 家银行中抢劫某些家,得到 j 价值 而不被抓住的概率。dp[ j ]=max( dp[ j ],dp[ j - val[ i ] ]*( 1-w[ i ] ) ) );将全部银行的钱当做背包的最大体积那么每家银行的钱则当做物品的体积那么被抓的概率当做物品的价值那么便容易推原创 2013-11-16 21:58:27 · 634 阅读 · 0 评论 -
HDU1069
题意:有n(n分析: (1) 对于每一种立方体, 假设长,宽,高互不相等, 则它放置方法有6种不同的情况(长,宽,高全排列).(2)那么,实际上可以看成是6*n种不同的立方体. (3)对这6*n种立方体的长(如果长相等则以宽)小到大排序. (4)这里就等效于有很多的箱子排成了一列, 看怎么才能将它堆得最高, (5)从小的一边开始, 如果后面的箱子上原创 2013-11-16 21:57:15 · 739 阅读 · 0 评论 -
PKU1260
题意:有n个种品质不同的Pearls,若要买某一品质的Pearl必须在你买的数量的基础上,多付10个这种Pearl的价钱,可以用高品质的Pearl代替低品质的(通过将少购买的种类来节约多支付的10个的价钱)。求要买到所有目标Pearls至少要花多少钱。#include#include#include#include#include#include#includeusi原创 2013-11-16 21:59:23 · 664 阅读 · 0 评论 -
poj 1185
状压的第一题:#include#include#include#include#include#include#include#include #include #include#includeusing namespace std;#define INF 1e8#define inf -0x3f3f3f3f#define eps 1e-8#define原创 2014-03-14 23:10:11 · 439 阅读 · 0 评论 -
poj 3254
题意:在N*M的草地上,1表示能放牛,0表示不能放牛,且牛不能相邻,问有多少种放法(一头牛不放也算一种)。。。#include#include#include#include#include#include#include#include #include #include#includeusing namespace std;#define INF 1原创 2014-03-15 11:41:38 · 457 阅读 · 0 评论 -
HDU 1400 && POJ 2411
题意:求用1*2的矩阵填满n*m的矩阵的方法有多少种;题解:状压DP,,,,1*2的矩阵要么橫着放,要么竖着放,把橫着放的矩阵标记为 1 1竖着放的矩阵标记为0 1 假如现在我们在铺砖 位置(i, j), 并且假设之前的位置已经铺设好的了,在这个位置,我们的选择:1. 不用铺砖了,可能在(i-1, j)的时刻已经被竖着铺上原创 2014-03-17 22:22:49 · 794 阅读 · 0 评论 -
POJ 2955 区间DP
题意:给你一行字符串(‘(’,‘)’,‘[',']')求最大匹配;dp[i][j]:在i , j区间的最大匹配数;注意边界的匹配!!!如第一个案列.............#include#include#include#include#include#include#include#include #include #include#inc原创 2014-03-28 22:46:54 · 423 阅读 · 0 评论 -
UVA 10003 区间DP
题意:给你一根木棍长度L,和m个截断的位置,每次截断都会有一个花费为当前的木棍长度,问花费最小为多少。#include#include#include#include#include#include#include#include #include #include#includeusing namespace std;#define INF 1e8#defi原创 2014-03-30 11:58:01 · 447 阅读 · 0 评论 -
HDU Word Index (数位DP)
题意:给你字符串,算出它的数值原创 2014-05-02 10:20:16 · 748 阅读 · 0 评论 -
UVA 10271
题意:有n个数据,给定k,要从中选出k+8个三元组(x,y,z,其中xdp[i, j]表示前i个筷子选择j对(x, y, z)差值最小。#include#include#include#include#include#include#include#include #include #include#includeusing namespace原创 2014-03-31 19:21:20 · 450 阅读 · 0 评论 -
HDU 3001 Travelling (三进制状态压缩 DP)
题意:有 n 个city,可以选择任一城市作为起点,每个城市不能访问超过2次,城市之间有权值,问访问全部n个城市需要的最小权值。思路:因为每个城市可以访问最多两次,所以用三进制表示访问的状态。详细见代码注释!!!!#include#include#include#include#include#include#includ原创 2014-08-13 22:50:10 · 676 阅读 · 0 评论