动态规划
文章平均质量分 64
Z_X_B_233
这个作者很懒,什么都没留下…
展开
-
数位DP的第一次试水(HDU 2089)
其实数位dp就是记忆化搜索的一种优化而已优化都是一个思路,不做重复的事数位dp就是这样的不用数位dp时,400+ms AC,用数位dp 0ms AC这就是区别其实最关键的就是这个limit他表示如果在这一位随便取什么值都不会改变dp的值呢思路都在注释里了,之间上代码吧#include#include#include#includeusing na原创 2017-07-12 16:26:08 · 190 阅读 · 0 评论 -
CF 55D(数位DP)
嗯,写完这个题后对数位dp有了一个更清楚的认识关键是对状态的一些理解题意就是对l到r区间内,能被他的非零位数整除的数的个数那么对于每一个第k位,前面数字之和是i,前面位数的最小公倍数是j的状态,他的值是确定的那么我们就有状态方程dp[k][i][j]了还有就是我们发现1到9的最大公倍数是2520那么0到2520中能被2520mod掉的数只有48个也就是说,1到9组合起来原创 2017-07-14 10:57:52 · 260 阅读 · 0 评论 -
数位dp小结(状压的第一次试水)
最近刷了好几套数位dp的题目了,感觉对数位dp总算是有了一个清楚的认识了,现在就写个小结数位dp其实就是对深搜的一个优化保存一些深搜的状态,那么下次搜索到这个状态的时候就直接返回dp数组中保存的只即可下面我们来看一道题XHXJ's LIS 题意就是我们给一个范围 l,r要求l,r内,所有lis长度为k的数字的个数#include #include #in原创 2017-07-18 10:47:42 · 407 阅读 · 0 评论 -
斜率优化dp小结
最近刷了几道斜率优化dp算是对斜率优化有了一定的了解了现在来小结一下斜率优化dp的优化能力是将n^2优化成n,n^3优化成n^2其转移方程一般是dp[k]=min(dp[i]+cost[i+1][k]),斜率优化优化的是排除一些不可能是最优解的解,那么什么情况下不可能是最优解呢下面看一道题HDU 2829状态转移方程是dp[i][j]=min(dp[k][j-1原创 2017-07-21 10:02:57 · 261 阅读 · 0 评论 -
状压DP小结
状压dp其实就是将状态压缩成2进制来保存其特征就是看起来有点像搜索,每个格子的状态只有1或0模板题,poj3254就是先给一个map,在这个有些地方不能放牛,有些地方可以然后牛与牛之间必须有间隔,问一共有多少种方法然后状态转移方程就是dp[i][j]表示的是第i行,状态为j的时候的最大方案数状态转移的时候判一下就好了#include #include #in原创 2017-07-23 10:40:15 · 2304 阅读 · 0 评论 -
广西邀请赛PD(dp+矩阵加速)
这个题目也是很不容易啊,一直坚持不懈的推了一天,终于自己写出来了题意很简单这里就不说了其实我们发现对于每个n只有5种结尾的情况,所以开始就想从这5个情况中找突破口结果发现要么会算重要么会算少然后就找了16种状态,就是最后一列的状态,结果16个dp方程把我推得晕头转向的最后想到,我们关心的就是把最后那五种情况的和而已而这五种情况可以由那16种情况中的五种推出来,然后慢慢推,发原创 2017-09-01 12:29:31 · 353 阅读 · 0 评论 -
大家一起来数二叉树把
长沙理工大学第十二届ACM大赛 K.大家一起来数二叉树吧【Dp】标签: 长沙理工大学第十二届ACM大赛2017-09-03 19:52 27人阅读 评论(0) 收藏 举报 分类:思维(599) dp(323) 版权声明:0.0小白有写的不好不对的地方请指出~目录(?)[+]题目描述转载 2017-09-05 19:59:07 · 395 阅读 · 0 评论 -
HDU 6199(DP)补题+一个超级有用的滚动数组思想
恩,这个题目开始想着应该不能用dp来写,因为后面的状态对前面的状态有影响然后emmmm,只有后面的状态对前面的状态有影响,这个。。。有点背锅了现在说正解dp[p][i][k]就是人p,在第i个宝石(这个宝石未取到)至少要取k个的差值那么我们的状态转移方程就出来了假设p=1代表Alice p=0代表Bobdp[1][i][k]=max(dp[0][i+原创 2017-09-12 17:12:30 · 330 阅读 · 0 评论 -
HZAU校赛补题PA(动态规划)
说来惭愧啊,那么简单的动态规划签到题我当时居然没把状态转移方程给推出来搞得自己变成三队的了题目传送门http://acm.hzau.edu.cn/problem.php?id=1199这题目要注意的地方我就放在注释里了#include #include #include #include #define maxn 100000+100using namespace st原创 2017-04-30 15:34:05 · 319 阅读 · 0 评论 -
动态规划_HDU3281
题意:给定B (B 方法就是动态规划了。 虽然刚开始一直以为是个贪心或者构造dp[i][j] 表示有i层楼, 剩余j个球时, 最坏情况要确定K 所需的次数那么在这些楼层里我们可以选择在k层(1有两种情况,破跟不破(1)不破, 则排除掉了k层,剩余i-k层 则转化为 dp[i - k][j](2)破了 则剩余i - 1层, 球剩k - 1个 转化为 dp原创 2017-03-25 16:10:29 · 517 阅读 · 0 评论 -
动态规划_区间DP
区间DP,就是在一个区间里面的DP题目HDU3280//第一次区间DP试水//dp[i][j]为i到j的区间最小值//dp[i][j]=dp[i][k]if (dp[i][k]=sum[k+1][j])#include #include #include #define maxn 1010#define inf 1<<26using namespace std;int原创 2017-03-23 20:27:11 · 498 阅读 · 0 评论 -
HDU 1024 (DP,有空在写一遍)
题意还是很简单的,就是给你n个数,把他分成m个独立的区间,要求所有区间的和最大那么我们很容易想到递推方程dp[j][i]表示前j个数分成i个区间的最大和且以a[j]结尾递推方程就为dp[j][i]=max(dp[j-1][i]+a[j],max(dp[t][i-1]+a[j])) (i-1可以看到我们这个方程的时间复杂度为 m×n×n,因为n=1e6所以时间复杂度炸了然后我原创 2017-07-08 20:43:03 · 192 阅读 · 0 评论