codevs 1047 邮票面值设计

1999年NOIP全国联赛提高组

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
题目描述 Description

给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值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分。

输入描述 Input Description

N和K

输出描述 Output Description

每种邮票的面值,连续最大能到的面值数。数据保证答案唯一。

样例输入 Sample Input

3 2

样例输出 Sample Output

1 3

MAX=7

 /*
这个题目知道是深搜,但是邮票面值的上界在深搜中不好确定,只知道下界是>前一个,这里就妙在用DP解决了深搜的上界,和当前邮票可以取到的连续最大值
*/
/*
①搜索。对每一步,枚举邮票面值,然后搜索下一张邮票面值并更新最优解。 ②完全背包确定搜索范围。 假设现在枚举到第 i 张邮票面值,第 i-1 张邮票面值为a[i-1],前 i-1 张邮票得到的最大连续值为x,则第 i 张邮票面值的范围就为 [a[i-1]+1,x+1]; 假设现在有 n 张邮票,怎么得到其最大连续值呢? 用 f[i] 记录达到数值 i 所需的最小邮票数量,初始化为一个极大值。然后用完全背包算出 f[i] 的值,从 0 开始,第一个f[i]>n,则 i-1 就为最大连续值。 */
#define N 50
#include<iostream>
using namespace std;
#define inf 500
#include<cstdio>
#include<cstring>
int b[N],ans=,a[N],f[inf];
int n,k;
void dfs(int m)
{
memset(f,0x3f,sizeof(f));
f[]=;
int i;
for(i=;i<=inf;++i)
{
for(int j=;j<=m&&a[j]<=i;++j)
f[i]=min(f[i],f[i-a[j]]+);/*完全背包是可以把物品空间的内外循环交换位置的,反正都是无限放*/
if(f[i]>n)/*当前m种邮票所能取到的最大值*/
{
i--;
if(i>ans)
{
ans=i;
for(int l=;l<=m;++l)
b[l]=a[l];
}
break;
}
} if(m==k) return;
for(int j=i+;j>a[m];--j)
{/*下一张邮票的范围*/
a[m+]=j;
dfs(m+);
}
}
int main()
{
scanf("%d%d",&n,&k);
a[]=;
dfs();
for(int i=;i<=k;++i)
printf("%d ",b[i]);
printf("\n");
printf("MAX=%d\n",ans);
return ;
}

深搜+DP剪枝 codevs 1047 邮票面值设计的更多相关文章

  1. [NOIP1999提高] CODEVS 1047 邮票面值设计(dfs+dp)

    dfs出邮票的各种面值,然后dp求解. ------------------------------------------------------------------------------- ...

  2. codevs 1047 邮票面值设计

    /* 开始没啥好的思路 暴力吧 T的太严重 加了k>n的特判 结果没数据…..然后又暴力生成了几组答案 打表 然而有没有数据 华丽的爆零了 正解 回溯+DP 回溯生成k数组 然后DP找最优解更新 ...

  3. 1047 邮票面值设计 (DFS+DP)

    题目描述 Description 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之 ...

  4. P1021 邮票面值设计(dfs+背包dp)

    P1021 邮票面值设计 题目传送门 题意: 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15N+K≤15)种邮票的情况下 (假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大 ...

  5. 【笔记】「pj复习」深搜——简单剪枝

    深搜--简单剪枝 说在最前面: 因为马上要 NOIP2020 了,所以菜鸡开始了复习qwq. pj 组 T1 ,T2 肯定要拿到满分的,然后 T3 , T4 拿部分分, T3 拿部分分最常见的做法就是 ...

  6. P1021 邮票面值设计

    P1021 邮票面值设计 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX ...

  7. P1021 邮票面值设计——搜索+完全背包

    P1021 邮票面值设计 题目意思是你最多用n张邮票,你可以自己设定k种邮票的面值,每种邮票数量无穷,你最多能用这k种邮票在不超过n张的情况下,组合成的价值要求是从1开始连续的, 求最大能连续到多少: ...

  8. Java实现 蓝桥杯VIP 算法提高 邮票面值设计

    算法提高 邮票面值设计 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤13)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮 ...

  9. 【深搜加剪枝】【HDU1455】【Sticks】

    题目大意:有一堆木棍 由几个相同长的木棍截出来的,求那几个相同长的木棍最短能有多短? 深搜+剪枝 具体看代码 #include <cstdio> #include <cstdlib& ...

随机推荐

  1. wrong requestcode when using startActivityForResult

    You are calling startActivityForResult() from your Fragment. When you do this, the requestCode is ch ...

  2. Laravel Predis Error while reading line from the server.

    问题 Laravel说明文档中的 Redis 发布与订阅案例,命令行运行php artisan redis:subscribe 到60s自动断开并报错 [Predis\Connection\Conne ...

  3. 自定义View_2_关于自定义组合View

    自定义View(2) Android当中给我们提供了丰富的UI控件,当然也许满足不了我们的需求,我们就必须学会自定义自己的View,我们怎么算是自定义自己的view呢! 我们会根据原来有的View对V ...

  4. play framework学习笔记之 模板引擎

    模板语法 ${client.name} ${client?.name} 不能确定client是否存在的时候? #{extends /} #{doLayout /}#{get} #{set} 比如 #{ ...

  5. BaseServlet

    1. 目的: 将提升Servlet的处理请求的能力,而不只限于doGet()/doPost()等请求. 让其Servlet能够自己根据请求,从而触发相应的方法进行处理. 2. 具体代码实现: impo ...

  6. db2死锁分析与处理

    在数据库中,锁的主要功能是为了控制并发数据的完整性而引入的机制,在并发应用中出现锁现象并不可怕,锁现象通常分为死锁和锁等待两种情形. 死锁是因为两个并发的进程或者线程同时各自占有一个资源,又需要占有对 ...

  7. AsyncTask.cancel()的结束问题

    实际项目中有这么一个问题,用户进入详情界面,那么我们就要网络加载数据并展现在UI上,这个加载用线程或者异步. 这里就拿项目中统一用异步任务来获取网络数据把. 用户可能会有这么一个操作,它在一个商品(说 ...

  8. Python基础(2)--对象类型

    Python使用对象模型来存储数据.构造任何类型的值都是一个对象 所有的Python对象都拥有三个特性:身份.类型.值 身份: 每一个对象都有一个唯一的身份来标志自己,任何对象的身份可以使用内建函数i ...

  9. 【原】iOS下KVO使用过程中的陷阱

    KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应.网上广为流传普及的一个例子是利用KVO检测股票价格的变动,例如这里.这个 ...

  10. CoreAnimation-05-CABasicAnimation

    概述 简介 CABasicAnimation是抽象类CAPropertyAnimation的子类,可以直接使用 CABasicAnimation又称基本动画,从fromValue到toValue按照指 ...