![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
VVVLeHr
这个作者很懒,什么都没留下…
展开
-
ZJOI2010统计前n个数中各个数码出现的次数
题目链接:ZJOI2010 count 数字计数题意就是统计某个区间之内的各个数码出现的次数。明显的数位dp。这里的做法事实上可以进一步的通过空间换时间,比如在dp记录中增加num和lead状态,这样可以减少后续的递归次数。大概可以从18ms减少到11ms。#include <iostream>#include <limits.h>#include <vec...原创 2020-04-25 23:22:43 · 287 阅读 · 0 评论 -
HDU-2084 基础dp
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2084题意:比较经典的一道题目,给一个数塔,从顶端走到底端,能走相邻位置,求路径最大权值。思路:从最后一层往前面考虑,因为最多可能有n个出口,并且都在最底层,所以从这里往前面推,每往上一格所得到的最优解都是这个出口的最优解。所以就可以很简单的写出状态转移方程:dp[i][j]=max(dp[i原创 2017-10-07 19:23:51 · 210 阅读 · 0 评论 -
UVA-12563 01背包
题意:去KTV唱歌,给定最大时间,求不超过这个时间能唱的最多歌曲,在有至少1秒的情况下还可以唱一首678秒的劲歌金曲。最大时间范围不超过1e9。歌曲数量不超过50首,每首歌长度不超过3分钟。思路:关于范围,不要给题目中的t的范围是1e9吓到了,这个范围看似很大,但是题目限制了每首歌的时间范围和歌曲的数目,总体算一下其实不到1e4。所以可以直接用时间作为背包,dp[v]表示时间为v的情况下能唱的最多歌原创 2017-10-29 23:13:26 · 213 阅读 · 0 评论 -
HDU-2955 01背包
题目链接:杭电oj高校二级域名一律不得访问,有机会再补上(flag)题意:题意读了很久才懂。一个强盗想要抢劫,他有一个被抓的最大概率,他抢劫每个银行都有一个相应的概率,希望可以尽可能多的抢劫,但是总的被抓概率不会低于给定的概率。思路:可以看出来是一个01背包,但是如果直接用最大概率作为背包由于精度和时间复杂度都不可能满足。所以应该用所有的银行总价值作为背包,被抓概率作为价值。但是这里的概率不能简单相原创 2017-10-23 23:41:13 · 165 阅读 · 0 评论 -
UVA-10635 LCS转化为LIS
题意:给定两个序列一个长度为p+1,一个为q+1,求两序列的LCS,序列中每个数字不重复,最大值为n*n,n不大于250。思路:每个数都不重复,所以可以将源数据和下标置换,对数列做一个哈希变换,另一个数列也做相同的变换就可以的到一个新的数列。可以转换为求新序列的LIS。时间复杂度就会降到O(nlogn)。原因可以这样思考,由于b中的数字是通过a的变换得到的,所以b的所有子集都是a的一个子集,但是顺序原创 2017-11-09 22:33:09 · 262 阅读 · 0 评论 -
HDU-1864 01背包
题意:给定n张发票,每张发票有m中项目,其中只有A,B,C三种发票可以被报销,每张发票单种报销上限是600,单张发票最大报销额为1000,最终最大报销额为q。求能够报销的最大金额。思路:01背包,报销金额是浮点数,所以改用发票数作为背包,背包容量是满足报销条件的发票数cnt。物品价值是每张发票报销额,存在val中。转移方程dp[v]=max(dp[v],dp[v-cost]+weight)。另外注意原创 2017-10-24 20:06:40 · 229 阅读 · 0 评论 -
WOJ 1005
01背包前言 背包问题本身已经是老生常谈了,但是这依旧是一个十分经典的问题,初学动态规划的朋友们肯定都绕不过它。网上已经有了很多十分优秀的背包问题讲解,譬如经典的《背包九讲》,但是我自己学了背包之后发现一个问题就是理解不够透彻,见到一个问题学一次,学一次就能刷几道题。现在我自己重新做了一些算法题,遇到了简单的01背包依旧不知道怎么做,于是就凭借零散的记忆和自我理解,对这些问题进行了求解,在这里...原创 2019-01-24 23:36:25 · 233 阅读 · 0 评论 -
最小邮票数
牛客网 计算机历年考研复试 最小邮票数题目描述&nbsp; &nbsp; 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。&nbsp; &nbsp; 如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。输入描述:&nbsp;&nbsp;&nbsp; 有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M&lt;原创 2019-02-19 15:46:41 · 119 阅读 · 0 评论