![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
文章平均质量分 83
Lcomyn
这个作者很懒,什么都没留下…
展开
-
【BZOJ 1087】【SCOI 2005】 互不侵犯King
状态压缩DP,f[i][j][k]保存第i行(包括第i行)之前放了j个国王,当前行用二进制表示后对应十进制数为k的方案数。 count[k]表示k所对应的二进制中1的个数。状态转移方程比较显然:f[i][j][k]=sum{f[i-1][j-count[k]][p]}; 其中k满足 (k&(k原创 2015-02-14 18:56:25 · 723 阅读 · 0 评论 -
【BZOJ 1925】【SDOI 2010】地精部落
代码短的惨绝人寰,思维复杂度高的惨绝人寰。首先很容易抽象出模型,求长度为n的抖动子序列个数,然后我们开始蛋疼。状态 f[i][j]表示以[1,j]开头的长度为i的,并且第一位是下降的抖动子序列个数。显然的是,实际上的答案是个数*2,因为这样并没有算上第一位是上升的。状态转移方程:(1)首先我们考虑开头为[1,j-1]的抖动子序列个数,显然这样的个数为f[i][j-1];(2)然原创 2015-04-09 10:51:04 · 1590 阅读 · 3 评论 -
【BZOJ 1010】【HNOI 2008】玩具装箱 toy
借着这个题学习了一下dp的斜率优化,感觉这东西好神啊。。。 先说一下裸的O(n2n^2)dp吧: s[i]=∑i=1ic[i]s[i]=\sum_{i=1}^{i} c[i] 显然我们有 f[i]=mink=0i−1f[k]+(s[i]−s[k]−L)2f[i]=\min_{k=0}^{i-1} f[k]+(s[i]-s[k]-L)^2 然而这个转移是O(n2n^2) 的,在n=5000原创 2015-05-25 20:55:37 · 889 阅读 · 0 评论 -
【BZOJ 3679】数字之积
人生第一道数位DP,首先对于每位数的乘积,有一个很显然的转移方程 d[i][j]d[i][j]表示ii位数乘积为jj的方案数,则有 d[i][j]=∑1≤k≤9,k|jd[i−1][k/j]d[i][j]=\sum_{1 \le k \le 9,k|j} d[i-1][k/j] 然而我们发现j可能很大,但经过实验发现只有5000余个,于是我们可以吧第二维下标换成在数表中的排名,单个递推就可做了原创 2015-07-30 16:34:58 · 1829 阅读 · 0 评论 -
【JSOI 2008】【BZOJ 1017】魔兽地图DotR
蒟蒻不会做(话说DP是我死穴么,每逢DP必跪),于是膜拜了题解 f[i][j][k]f[i][j][k]表示对于ii及其子树花费kk,并且提供给ii的父亲jj个部件以合成的最高能量值。 1、对于叶子节点 f[i][j][k∗price[i]]=(k−l)∗price[i]f[i][j][k*price[i]]=(k-l)*price[i] 2、对于非叶子节点 穷举总合成次数,g[tot][原创 2015-09-28 19:50:40 · 802 阅读 · 0 评论