洛谷P1021邮票面值设计
一道很经典的搜索题,可以锻炼搜索的能力,比如可以用dfs覆盖加dp的方式来寻找+更新答案。而且还可以通过在递归中增加数组的方式来辅助搜索。
#include <bits/stdc++.h>
using namespace std;
int n, k, ans[101000], maxn, tot, a[101000];
int ne(int pos, int maxnow)
{
int dp[10100];
memset(dp, 4, sizeof(dp));//dp设为最大值。
dp[0] = 0;
for (int i = 1; i <= pos; i++)
for (int j = a[i]; j <= a[pos] * n; j++)//dp判断需要几个数
dp[j] = min(dp[j - a[i]] + 1, dp[j]);
for (int i = 1; i <= n * a[pos]; i++)
if (dp[i] > n)//如果i不行了,说明i-1可以
return i - 1;
return a[pos] * n;//返回最大值
}
void dfs(int pos, int maxnow)//覆盖数组
{
if (pos == k + 1)
{
if (maxnow > maxn)
{
maxn = maxnow;
for (int i = 1; i <= k; i++)//更新答案
ans[i] = a[i];
}
return;
}
for (int i = ans[pos - 1] + 1; i <= maxnow + 1; i++)
{
a[pos] = i;//每一个位置都加以判断。
int maxx = ne(pos, maxnow);
dfs(pos + 1, maxx);
}
}
int main()
{
scanf("%d%d", &n, &k);
dfs(1, 0);
for (int i = 1; i <= k; i++)
printf("%d ", ans[i]); puts("");
printf("MAX=%d", maxn);
}
洛谷P1021邮票面值设计的更多相关文章
- 洛谷P1021 邮票面值设计
题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之间的每一个邮资值都能得到 ...
- 洛谷P1021邮票面值设计 [noip1999] dp+搜索
正解:dfs+dp 解题报告: 传送门! 第一眼以为小凯的疑惑 ummm说实话没看标签我还真没想到正解:D 本来以为这么多年前的noip应该不会很难:D 看来还是太菜了鸭QAQ 然后听说题解都可以被6 ...
- 洛谷 P1021 邮票面值设计
题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之间的每一个邮资值都能得到 ...
- 洛谷——P1021 邮票面值设计
https://www.luogu.org/problem/show?pid=1021 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都 ...
- P1021 邮票面值设计
P1021 邮票面值设计 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX ...
- P1021 邮票面值设计——搜索+完全背包
P1021 邮票面值设计 题目意思是你最多用n张邮票,你可以自己设定k种邮票的面值,每种邮票数量无穷,你最多能用这k种邮票在不超过n张的情况下,组合成的价值要求是从1开始连续的, 求最大能连续到多少: ...
- P1021 邮票面值设计(dfs+背包dp)
P1021 邮票面值设计 题目传送门 题意: 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15N+K≤15)种邮票的情况下 (假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大 ...
- 深搜+DP剪枝 codevs 1047 邮票面值设计
codevs 1047 邮票面值设计 1999年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description ...
- [NOIP1999提高] CODEVS 1047 邮票面值设计(dfs+dp)
dfs出邮票的各种面值,然后dp求解. ------------------------------------------------------------------------------- ...
随机推荐
- vs setup 自动下载依赖的framework配置
1.项目->属性->签名->选中为ClickOnce清单签名->创建测试证书 2.项目->属性->安全性->启用ClickOnce安全设置 3.setup项目 ...
- 手动实现自己的spring事务注解
spring事务是基于同一个数据连接来实现的,认识到这一点是spring事务的关键,spring事务的关键点便在于在事务中不管执行几次db操作,始终使用的是同一个数据库连接.通过查看源码,我们可以看到 ...
- 在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值)
原文:在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. sql循环取差值,该怎 ...
- [转]Entity Framework 异常: 'OFFSET' 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效
https://blog.csdn.net/weixin_34321977/article/details/85850064 在使用 EF 的时候,突然发现更新后在服务器中运行出错,异常信息主要包含以 ...
- U盘安装Ubuntu14.04&配置远程win10远程连接
1.U盘安装Ubuntu:https://blog.csdn.net/baigoocn/article/details/26561473 2.win10远程访问Ubuntu系统:https://www ...
- C++报错:error C3874
解决: 1.class 定义之后不要忘记分号 2.主函数写为int main() { }
- ftl 列表弄成js数组
例子:ftl 列表:bannerViewUrls var arrayBanner=[<#list bannerViewUrls as list>"${list}"< ...
- IOS开发之——绘图(CGContext)
0 CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文 1 CGContextMoveToPoint 开始画线 2 CGContex ...
- SDL图解
1.什么是SDL 2.为什么要用SDL 3.SDL由哪几个阶段组成 用于规范公司web应用开发流程:安全需求分析.代码检查.安全测试... 4.微软的SDL实施流程
- c# 类嵌套