链接:http://poj.org/problem?id=1185
题意:一个地图上有两种地形,H和P,P上可以放一个炮,攻击范围是上下左右各两格,问的是最多可以再地图上放多少个炮。行N
思路:因为上下左右各两格内不能放置炮,所以每一行的状态数从2^10减少到60种。状态转移方程为:dp[i][j][k]=max(dp[i-1][k][l]+bb[j])。dp[i][j][k]表示在第i行状...
分类:
其他好文 时间:
2014-07-21 16:21:13
阅读次数:
272
原来是想dp[i],表示不被抓概率为i所能抢到的最大钱(概率1-100)
后来看了别人的博客是dp[i]表示抢了i钱最大的不被抓概率,嗯~,弱菜水题都刷不动。
那么状态转移方程就是
dp[i]=max(dp[i],dp[i-money]*p),初始化dp(0~maxn)为0,dp[0]=1(1毛钱都没抢你抓个毛线啊,哥是良民~)
又是贴代码环节~
#include
#includ...
分类:
其他好文 时间:
2014-07-20 23:08:15
阅读次数:
284
题目大意:买珍珠,每买一种珍珠需要额外付出十个这种珍珠的钱,但你可以买比这种珍珠高品质的珍珠来替换它(那么就只需要那高品质付出那额外的十个珍珠的钱了,但是每个珍珠的价钱也变化了)这是一个dp。令dp[i]为只买前i种珍珠的最少花费钱数,状态转移方程为dp[i] = min(dp[i],dp[j]+s...
分类:
其他好文 时间:
2014-07-19 15:03:24
阅读次数:
208
接触动态规划的第一题是数塔问题,第二题就是01背包问题了。当时看的懵懵懂懂,回过头来再看这道题还是非常简单的了。用 dp[i][j] 表示取前i种物品,使它们总体积不超过j的最优取法取得的价值总和状态转移方程:dp[i][j] = max(dp[i-1][j],dp[i-1][j-cost[i]]+...
分类:
其他好文 时间:
2014-07-18 19:00:42
阅读次数:
266
Robberies 点击打开链接
背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);
正确的方程是:f[j]=max(f[j],f[j-q[i].money]*q[i...
分类:
其他好文 时间:
2014-07-16 09:28:51
阅读次数:
207
MaximumSum题意:求最大子矩阵和状态转移方程dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] + a[i][j]#include #include int a[110][110], dp[110][110];int main(...
分类:
其他好文 时间:
2014-07-13 17:36:42
阅读次数:
277
HDU 2829 Lawrence(动态规划-四边形不等式)
题目大意:
有n个点连在一起,m个炸弹可以阻断它们的相连,问你全部用完炸弹后的最小值。
解题思路:
四边形不等式是一种比较常见的优化动态规划的方法:
设m[i,j]表示动态规划的状态量。
m[i,j]有类似如下的状态转移方程:
m[i,j]=opt{m[i,k]+m[k,j]}(i≤k≤j)
如果对于任意的a≤b≤c≤d,有m[a,c]+m[b,d]≤m[a,d]+m[b,c],那么m[i,j]满足四边形不等式。
以上是适用这种优化方法的必要...
分类:
其他好文 时间:
2014-07-08 18:07:15
阅读次数:
273
裸0/1背包,就是从各种币种里面拿来凑足N元,求最多有多种方案。用dp[i][j]表示选前i个币种凑成j的方案数量
状态转移方程: dp[i][j] = dp[i- 1][j] j = coins[i]
/*
ID:kevin_s1
PROG:money
LANG:C++
*/
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2014-07-01 09:29:13
阅读次数:
209
http://poj.org/problem?id=1185dp[i][j][k]表示第i行状态为k,第i-1行为j;状态转移方程dp[i][j][k]=max(dp[i][j][k],dp[i-1][j][k]+c[k]); 1 #include 2 #include 3 #include ...
分类:
其他好文 时间:
2014-06-28 17:09:38
阅读次数:
206
dp题:
1、写状态转移方程;
2、考虑初始化边界,有意义的赋定值,还没计算的赋边界值;
3、怎么写代码自底向上计算最优值
今天做了几个基础dp,全部是dp方程写对但是初始化以及计算写错
先是poj 1651 其实就是个赤裸裸的矩阵连乘,dp方程很容易写出
dp[i][j]=min(dp[i][k]+dp[k+1][j]+r[i]*c[k]*...
分类:
其他好文 时间:
2014-06-22 19:29:41
阅读次数:
157