DP+DFS

复杂度 O(玄学)

一道奇怪的题目,考场不一定能想得出来

首先证明1的必要性,显然,没有1无法表示出1,因此1是必要的

有了1之后,就有了一个枚举范围,对于一种邮票,它的面值要比前一个大。

设前i-1种邮票能表示出来的最大范围为up,那么一定不能表示出up+1,所以第i种邮票的最大面值为up+1

复杂度未知,不过这种小数据的题只要想出解法通常就能过了

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;#define go(i,a,b) for(int i=a;i<=b;++i)
#define com(i,a,b) for(int i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))const int inf=0x3f3f3f3f;int Max=0,ans[20],tmp[20],f[100000+10],m,tot;int calc(int n,int up){up*=tot;go(i,1,up) f[i]=inf;go(i,1,n)go(j,tmp[i],up){if(f[j-tmp[i]]+1<=tot)f[j]=min(f[j-tmp[i]]+1,f[j]);}go(i,1,up){if(f[i]==inf) return i-1;}return up;
}void dfs(int now,int last,int up){if(now==m+1){if(up>Max){Max=up;go(i,1,m) ans[i]=tmp[i];}return;}int x;go(i,last+1,up+1){tmp[now]=i;if((x=calc(now,i))>up)dfs(now+1,i,x);}
}int main(){//freopen("input.txt","r",stdin);cin>>tot>>m;dfs(1,0,0);go(i,1,m) cout<<ans[i]<<' ';puts("");cout<<"MAX="<<Max;return 0;
}

转载于:https://www.cnblogs.com/White-star/p/11493918.html

洛谷P1021 邮票面值设计相关推荐

  1. 洛谷P1021邮票面值设计

    题目 一道很经典的搜索题,可以锻炼搜索的能力,比如可以用dfs覆盖加dp的方式来寻找+更新答案.而且还可以通过在递归中增加数组的方式来辅助搜索. #include <bits/stdc++.h& ...

  2. P1021 邮票面值设计

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

  3. 算法提高 邮票面值设计

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

  4. 算法提高 邮票面值设计 搜索 动态规划

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

  5. 2021.06.03邮票面值设计

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

  6. codevs 1047邮票面值设计

    codevs 1047邮票面值设计 刚看这题的时候就感觉是搜索,但是分类又是动态规划,就往动态规划那里想,结果就以为是那种一个递推式就出来的一个动态规划,后来写代码交上去发现都是错了,才感觉这里面肯定 ...

  7. java 算法提高 邮票面值设计 蓝桥杯1046

    java 算法提高 邮票面值设计 蓝桥杯1046 算法提高 邮票面值设计 思路 代码 算法提高 邮票面值设计 Description 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤13) ...

  8. 洛谷 P2725 邮票题解

    题目背景 给一组 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K -- 表示信封上能够贴 K 张邮票.计算从 1 到 M 的最大连续可贴出的邮资. 题目描述 例如,假设有 1 分和 3 ...

  9. 邮票面值设计java,[蓝桥杯][算法提高VIP]邮票面值设计 (C++代码)

    解题思路: 注意事项: 参考代码://so easy #include #include//头文件 using namespace std; int a[17],n,k,ans[17],maxn;// ...

最新文章

  1. debian linux 版本代号
  2. bootstrap下拉列表与输入框组结合的样式调整
  3. 虚拟机和linux的安装
  4. 成为Java流专家–第2部分:中级操作
  5. python-循环-通过while循环完成一个电子钟的模拟
  6. Android应用程序启动过程源代码分析(5)
  7. python中复制n次字符串_Python正则表达式,如何将字符串匹配n次 - python
  8. 2007年4月 [Update to 4.27]
  9. mongodb系列~mongodb的副本集搭建和原理
  10. iOS底层探索之类的结构—cache分析(上)
  11. 华为管理学案例分析_华为案例分析——管理学作业.ppt
  12. windows设置CPU主频
  13. Linux中的lvm动态扩容管理
  14. 星际穿越+降临+明日边缘?星际拓荒重新定义星际探索题材游戏
  15. Photoshop-颜色的调整
  16. 图像成像原理与相机标定
  17. 初学Python可能会遇见的小程序
  18. python基础(一)完结
  19. 基于stm32+LM2904+esp8266的噪声预警系统
  20. 开关霍尔简易估算电角度

热门文章

  1. C# + Ext.Net打印
  2. 3个月工作经历能不能写在简历上呢
  3. ssh总断 (by quqi99)
  4. java 客户端定时任务_定时任务最简单的3种实现方法(超实用)
  5. DXC Technology Company旗下公司Luxoft完成对CMORE Automotive的收购
  6. 计算当前四边形是否为凸四边形
  7. Github上的英文解释
  8. 使用bat脚本提取文件名及批量修改文件名
  9. 可乐瓶游戏c语言,小班体育游戏《玩可乐瓶》教案
  10. CMU开设美国首个人工智能本科专业