原题链接:[NOIP1999 提高组] 邮票面值设计 - 洛谷
目录
给定一个信封,最多只允许粘贴 N 张邮票,计算在给定 K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值 MAX,使在 1 至 MAX 之间的每一个邮资值都能得到。
例如,N=3,K=2,如果面值分别为 1 分、4 分,则在 1∼6 分之间的每一个邮资值都能得到(当然还有 8 分、9 分和 12 分);如果面值分别为 1 分、3 分,则在 1∼7 分之间的每一个邮资值都能得到。可以验证当 N=3,K=2 时,7 分就是可以得到的连续的邮资最大值,MAX=7,面值分别为 1 分、3 分。
输入格式
2 个整数,代表 N,K。
输出格式
输出共 2 行。
第一行输出若干个数字,表示选择的面值,从小到大排序。
第二行,输出 MAX=S, 表示最大的面值。
输入输出样例
输入 #1
3 2
输出 #1
1 3 MAX=7
此题主要利用了dp+dfs,根据题目来看需要k种邮票,那么需要哪几种邮票,这就需要枚举,dfs去每一步搜索,题目中要求最大连续长度,考虑dp去解决,要求最大连续长度,意思就是通过这k种面值,能够连续不间断组成1~?之间的每一个数,那么我定义一个f[M]表示通过k种面值得到分值为M的最少邮票张数,只要这个值小于题目中给定的邮票张数n,那么从小到达遍历,此位置前面的都是连续的,当找到第一个不满足 那么我们重新顺一下解题思路,首先枚举这k种邮票面值组合,我们解决办法是最简单的dfs,我们枚举出这k种面值组合,对它进行求解最大连续长度,处理办法是dp,具体解释注释在代码上。 此题博主感觉难度较大,如果题量够大,可能对他们来说,一眼就出思路,dfs+dp这种题第一次做,当时看的是罗老师的B站讲解,大家看不懂的可以去看看。 信奥编程罗老师:P1021 [NOIP1999 提高组] 邮票面值设计_哔哩哔哩_bilibili 注:图片来自罗老师讲解。

代码实现:
题后总结:
虚拟机服务器中了lockbit3.0勒索病毒怎么办,lockbit3.0勒索病毒解密数据恢复
浙大恩特客户资源管理系统任意文件上传漏洞复现
003 PythonTCP网络通信
放大器的稳定性分析举例
工作之余想线上学习软件测试靠谱么?
基于WOA的VMD超参数优化
基于B/S机场飞机票网上订票管理系统【Java毕业设计·安装调试·代码讲解·文档报告】
RHEL 8.6 NFS 服务端安装配置
NXP公司K60N512+PWM控制BLDC电机