题目:

Description

这款《大富翁》游戏曾经是我的启蒙桌游之一,印象最深的就是那一叠叠花花绿绿的钞票,还有和小伙伴从欢乐买地到撕逼掀桌的搞笑回忆~

当你的对手在一整条街上开满了旅馆(经过时要交过路费),每一次掷骰子都会心惊胆战,一不小心就会损失一个亿的感觉(╯▔皿▔)╯。

最近在逛桌游店的时候,我又忍不住上前搓了一把。

在购买地产、缴纳地税或交过路费时,往往需要支付一定的金额,我们需要用手中的钞票组合出恰好能支付金额的钱数,满足a[1]+a[2]+...+a[k]=M。

眼下我又来到了死亡一条街...看着小伙伴得意洋洋的样子,我心有不甘地拿出了钞票。

当然了支付时还是有一定技巧的,在选择面值时,尽可能选大额的钞票,这样就可以保证剩下足够多的零钱,有更多的金额组合形式,从而减少了不必要的浪费。这里你只需保证让最小的面值尽可能大即可。

现在告诉你初始时yzm10手里各张钞票的面值,你能猜出他是怎么支付的吗?

Input

第一行给出两个正整数:N(1<=N<=10^4)是yzm10手中的钞票数,M(1<=M<=100)是需要支付的金额。

第二行给出N张钞票的非负整数面值(保证在int范围内),数字间以空格分隔。

Output

在一行中按升序输出所需支付的各张钞票的面值,保证让最小的面值尽可能大,数字间以空格分隔。

若无法恰好凑出金额(不足或浪费),则输出-1。

Sample Input 1

4 10
2 3 7 8

Sample Output 1

3 7

Sample Input 2

5 10
2 3 4 4 5

Sample Output 2

2 4 4

Sample Input 3

2 10
5 11

Sample Output 3

-1

Hint

答案可能不唯一,本题采用special judge,输出任意一种即可。

样例1有两种取法(2,8)(3,7),2<3,选第二种。

样例2有两种取法(2,3,5)(2,4,4),因为最小值都为2,两种均满足条件。

题意不解释,解题思路:

01背包,看看是否能恰好装满,然后需要注意的就是在进行背包装卸的时候先排一下序,满足他们的要求,咱们要输出存在最小的值的那组数据,所以我们按照降序排列,之后的先装价值大的,之后就记录路径,(考察重点),保存到数组,然后输出即可。

ac代码:

#include<bits/stdc++.h>
#define maxn 10005
#define maxm 105
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
int num[maxn];
int dp[maxn];
int pre[maxn][maxm];
int ans[maxn];
int cnt=0;
bool cmp(int a,int b)
{return a>b;
}
int main()
{int n,m;
//  memset(dp,-inf,sizeof(inf));
//  dp[0]=0;scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%d",&num[i]);sort(num,num+n,cmp);for(int i=0;i<n;i++)for(int j=m;j>=num[i];j--){if(dp[j]<dp[j-num[i]]+num[i]){dp[j]=dp[j-num[i]]+num[i];pre[i][j]=1;}}
//  cout<<dp[m]<<endl;if(dp[m]!=m)cout<<"-1 -1"<<endl;else{int i=n-1,j=m;while(j){if(pre[i][j]>0){ans[cnt++]=num[i];j-=num[i];}i--;}printf("%d",ans[0]);for(int i=1;i<cnt;i++)printf(" %d",ans[i]);printf("\n");}   return 0;
}

【qduoj】【yzm10与大富翁的故事】(hdu百度之星)相关推荐

  1. HDU 百度之星(测试赛) - 1002 列变位法解密

    Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置任 ...

  2. HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))

    Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. 2019 年百度之星·程序设计大赛 - 初赛一 C. HDU 6670 Mindis 离散化+dijkstra

    题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=6670 Mindis Time Limit: 4000/2000 MS (Java/Others) M ...

  4. HDU 6112 今夕何夕【2017百度之星】【日期模拟计算】【基姆拉尔森计算公式】【蔡勒公式】

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. 2019 年百度之星·程序设计大赛 - 初赛一Game HDU 6669 (实现,贪心)

    Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  6. 2014年百度之星资格赛第一题Energy Conversion

    2014年百度之星资格赛第一题Energy Conversion Problem Description 魔法师百小度也有遇到难题的时候-- 如今,百小度正在一个古老的石门面前,石门上有一段古老的魔法 ...

  7. 2016百度之星 - 初赛(Astar Round2B)解题报告

    此文章可以使用目录功能哟↑(点击上方[+]) 被自己蠢哭,去年还能进一下复赛,今年复赛都没戏了... 链接→2016"百度之星" - 初赛(Astar Round2B)  Prob ...

  8. 【百度之星2014~初赛(第二轮)解题报告】JZP Set

    声明 笔者近期意外的发现 笔者的个人站点 http://tiankonguse.com/ 的非常多文章被其他站点转载,可是转载时未声明文章来源或參考自 http://tiankonguse.com/  ...

  9. 列变位法解密--百度之星B题

    http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=584&pid=1002 关于百度之星的晋级规则说明 列变位法 ...

  10. 2016百度之星 - 初赛(Astar Round2A)解题报告

    此文章可以使用目录功能哟↑(点击上方[+]) 有点智商捉急,第一题卡了好久,看来不服老,不服笨是不行的了...以下是本人目前的题解,有什么疑问欢迎提出 链接→2016"百度之星" ...

最新文章

  1. 深度分析define预处理指令
  2. ACMNO.16用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数 输入 X 输出 X的
  3. 连接一切:自媒体的未来是什么??
  4. nvprof 使用记录; 以及使用 nvprof 查看tensorflow-gpu 核函数运行记录
  5. 如何在一台没有网的电脑上安装anaconda_简述验证Anaconda是否安装成功的两种方式...
  6. Nodejs版本的企业微信中接收消息与腾讯对接之验证URL 代码已经上传,可以去下载
  7. Go语言编程17课:切片,步入数组的窗口(附pdf百度云)
  8. 博客目录及最新Github下载地址
  9. Java多线程 | 用多个线程模拟实现银行叫号系统
  10. 解决System进程占用80端口,关闭IIS服务
  11. php 专业英语,给大家推荐几个专业英语翻译功能强大的网站
  12. 互联网+对酒店IPTV电视系统的影响
  13. 【滤波器】2. 有源滤波器概述
  14. 实战:HPA(Pod 水平自动伸缩)-2021.11.23
  15. word自动消除html标签,如何将Word转换为网页html格式的方法(附代码清理方法)
  16. IaaS PaaS SaaS 读音及含义
  17. 单目标优化、多目标优化
  18. android vitamio框架,利用Vitamio框架来做自己的视频播放器
  19. Spring Boot SOAP系列之WSDL是什么“Lese”
  20. cocos2dx 3.4 lua加密 setXXTEAKeyAndSign

热门文章

  1. chromium 各种版本下载
  2. 记事本开发 dos下编译java 多个类文件_通过记事本编写的java代码通过()命令运行。_学小易找答案...
  3. 最近计算机速度测试情况,速度测试
  4. Istio 流量管理
  5. 计算机网络教程第五版|微课版 - 第二章 物理层 - 重点概念
  6. .NET学习路线总结之LINQ查询
  7. mysql relay log 查看_Mysql-relay log
  8. 社招面试会遇到哪些坑?
  9. luogu P3369(Splay)
  10. 【英语词组】恋恋不忘Day4-2