洛谷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求解. ------------------------------------------------------------------------------- ...
随机推荐
- vue基于 element ui 的按钮点击节流
vue的按钮点击节流 场景: 1.在实际使用中,当我们填写表单,点击按钮提交的时候,当接口没返回之前,迅速的点击几次,就会造成多次提交. 2.获取验证码,不频繁的获取. 3.弹幕不能频繁的发 基于这几 ...
- 怎样获取iframe节点的window对象
需要使用iframeElement.contentWindow; var frame = document.getElementById('theFrame'); var frameWindow = ...
- docker安装及基本使用
docker分为docker CE 和docker EE,CE即免费社区版,EE即企业付费版.下面基于centos7安装docker CE,其它linux版本可以参考官方文档https://docs. ...
- VS.NET(C#)--2.6_ASP.NET服务器控件层次结构
ASP.NET服务器控件层次结构 语法 <asp:ControlType Id="ControlID" Rubat="Server" Property=& ...
- springboot_3
1. 返回数据与返回页面 在写web项目的时候,controller里的返回值一般分为两种,一种是返回页面,也就是ModeAndView,另一种是直接返回数据,比如json格式的数据. 返回一个页面, ...
- 字符串replace的理解和练习和配合正则表达式的使用
下面代码展示了(demo地址 https://codepen.io/peach_/pen/jONJjRY): 1.字符串replace的理解和练习和配合正则表达式的使用, 2.正则表达式学习 3.通过 ...
- 如何编写snort的检测规则
如何编写snort的检测规则 2013年09月08日 ⁄ 综合 ⁄ 共 16976字 前言 snort是一个强大的轻量级的网络入侵检测系统.它具有实时数据流量分析和日志IP网络数据包的能力,能够进行协 ...
- 返回ArrayBuffer数据下载
返回的数据 const blob = new Blob([response.data]); if ('download' in document.createElement('a')) { const ...
- Vivado生成及使用edf文件
前言 EDF文件可以直接导入Vivado,而无需Verilog源文件. 好处: (1) 避免沙雕队友修改源代码,则可以直接提交EDF网表文件. (2) 避免用户剽窃劳动成果. (3) ...
- HANA数据库无法停止
Symptom: 使用命令HDB stop多次,每次报错为timeout ----------------------- sdpadm@PRDDB01:/usr/sap/SDP/HDB66/prder ...