![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
UFO_Wlc
这个作者很懒,什么都没留下…
展开
-
【动态规划——盗版无限背包(有个数限制)】coin——金币
题目讲解:用一个数组f[i]表示i的价格是否能达到f[0]=1,表示价格为0可以到达,赋初值后用s[i][j]表示到达i的价格用的第j个钱几个用无限背包的方法加一句判断s[i][j]<j所能用的最大个数(无限背包不会的话看程序后的讲解)#include<cstdio>#include<cstring>int n,m;int a[...原创 2018-04-22 15:24:45 · 493 阅读 · 1 评论 -
【动态规划——基础】01背包与无限背包
无限背包讲解:一个物品可以放很多次所以先前更新的状态要求影响后面更新的状态01背包要求是从最大值向后扫以保证每个物品只用一次所以每个物品可以用多次,从前往后扫即可例子(f[i]表示与上程序中一样):假设物品质量4容量1001:从10往前扫,扫到f[0]=1,然后更新f[0+4]=1无限:从0往后扫,首先扫到f[0]=1,更新f[0+4]=1再往后扫,再次扫到...原创 2018-04-22 15:43:40 · 1307 阅读 · 0 评论 -
【动态规划——单调队列维护】——烽火传递
用q[i]表示到i前面符合条件的最小代价为多少(要取到i)单调队列维护区间中q[i]的最小值l,r表示单调队列的队首与队尾从1到n循环,若q[qj[r]]>q[i](队尾比当前大)弹出队尾将当前放入若qj[l]<i-m(长度大于要求)l++最后更新一下q[i]=q[l]+a[i](符合要求区间中最小值加当前值为当前最小值)答案在n—n-m+1中#inc...原创 2018-04-23 10:09:23 · 434 阅读 · 0 评论 -
【动态规划——状态压缩】dream——蒙德里安的梦
用二进制状态压缩,用f[i][s]表示做到第i行状态为s。s的二进制表示第几位(第几个位置)是否被放过——状态s=10(1010)第一个位置被放过,第二个位置没被放过,第三个位置被放过,第四个位置没被放过。然后分层枚举本层状态与上层状态,若两种状态相符合,f[i][s]+=f[i-1][ss](ss为上层状态,s为本层状态)。判断状态符合方法:1、s中j位为0,ss中j位为1(在i...原创 2018-04-19 20:42:09 · 261 阅读 · 0 评论