![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
------ 动态规划
文章平均质量分 64
Receiling
慢慢走,走得快。。。
展开
-
(HDU4501) 三维01背包 + 惯性写法导致的错误
01背包应该来说是一个很熟悉的内容,但是举一反三从一维的01背包到多维的01背包,这里的前提是这些维度没有依赖关系,第一次看到这道题是,一下子就想到将v1, v2 看做两维背包,但是却一直没有把免费拿的作为一维背包,将免费拿的个数作为容量。后来一看到题解就明白了,看来01背包的姿势还有待加强。还有就是这次写背包由于之前的惯性写法导致了一个错误,查错查了好久才返现,由于使用的减少空间的写原创 2017-08-11 22:18:35 · 324 阅读 · 0 评论 -
数位DP入门+数位DP模板
数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦!之所以要引入数位的概念完全就是为了dp。数位dp的实质就是换一种暴力枚举的方式,使得新的枚举方式满足dp的性质,然后记忆化就可以了。两种不同的枚举:对...转载 2017-08-20 11:58:20 · 9844 阅读 · 3 评论 -
【HDU6156】Palindrome Function(数位DP+回文串)
题意:求在[L,R]之间的所有的回文串的个数,但是有一个附加条件就是在不同的进制下,题目要求即为:给定L,R, l,r, 分析:这道题首先可以简化一下,问题简化为在K进制下,[L, R]中的回文串的数目,因为进制只有36个,而且是不是一个数字是不是回文串是一个数字的自身的属性,因此可以直接在DP数组上不断处理,然后利用保留的信息加速计算,也就是先枚举进制在K进制下用数位...原创 2017-08-20 15:17:11 · 586 阅读 · 0 评论 -
【HDU6149】Valley Numer II(状压DP)
在百度之星的复赛上对这道题没什么思路,后来看到题解说这是一道状压DP,正好之前对于状压DP知识粗略的了解过一点,借这道题正好好好学习一下状压DP。这是我学习状压DP看的一些资料:https://wenku.baidu.com/view/84164e1a227916888486d7d6.htmlhttps://wenku.baidu.com/view/8b3ffc631479171...原创 2017-08-21 15:24:23 · 340 阅读 · 0 评论 -
01背包的路径全纪录
用DP求出 01背包的最大价值后该如何求得这条路径,就是有多少种选取情况下可以达到这个最大价值呢?在本次百度之星的比赛中,有毒的1004让我好好思考了这个问题:#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using nam...原创 2017-08-07 11:12:38 · 410 阅读 · 0 评论 -
【CodeForces 158E】Phone Talks(DP)
题意很好理解,这里就不再赘述了。这道题以dp[i][j]表示前i个物品在放弃j个时能取的最小的时间,然后状态转移就是:不选这个任务时:dp[i + 1][j + 1] = min(dp[i + 1][j + 1], dp[i][j]);选择这个任务时:if(st > dp[i][j])//如果这个任务开始时间比dp[i][j]迟{ dp[i + 1][j] =...原创 2017-08-30 14:53:26 · 247 阅读 · 0 评论 -
多重背包二进制优化(POJ1276)
主要是记录一下对于背包问题的二进制优化方法#include <iostream>#include <cstdio>#include <queue>#include <vector>#include <algorithm>#include <string>#include <bitset>#includ原创 2018-07-08 14:36:43 · 814 阅读 · 0 评论