L3-001 凑零钱

L3-001凑零钱 韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有104枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。 输入格式: 输入第一行给出两个正整数:N(<=104)是硬币的总个数,M(<=102)是韩梅梅要付的款额。第二行给出N枚硬币的正整数面值。数字间以空格分隔。 输... 阅读详情

L3-001 凑零钱
韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有10^4^枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。

输入格式:

输入第一行给出两个正整数:N(<=10^4^)是硬币的总个数,M(<=10^2^)是韩梅梅要付的款额。第二行给出N枚硬币的正整数面值。数字间以空格分隔。

输出格式:

在一行中输出硬币的面值 V~1~ <= V~2~ <= … <= V~k~,满足条件 V~1~ + V~2~ + … + V~k~ = M。数字间以1个空格分隔,行首尾不得有多余空格。若解不唯一,则输出最小序列。若无解,则输出“No Solution”。

注:我们说序列{A[1], A[2], …}比{B[1], B[2], …}“小”,是指存在 k >= 1 使得 A[i]=B[i] 对所有 i < k 成立,并且 A[k] < B[k]。

输入样例1:

8 9
5 9 8 7 2 3 4 1
输出样例1:

1 3 5
输入样例2:

4 8
7 2 4 3
输出样例2:

No Solution

解题思路:
01背包问题,用choice标记是否选取,状态转移方程为dp[v]=max(dp[v],dp[v-c[i]]+c[i])
参考了一些博客,都是这种解法,但是第四个点会内存超限。

#include<cstdio> 
#include<vector>
#include<algorithm>
using namespace std;
int n,m;
int dp[110],c[10010];
bool choice[10010][10010];
bool cmp(int a,int b){
    return a>b;
}
int main() {
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&c[i]);
    sort(c+1,c+n+1,cmp);
    for(int i=1;i<=n;i++){
        for(int j=m;j>=c[i];j--){
            if(dp[j]<=dp[j-c[i]]+c[i]){
                dp[j]=dp[j-c[i]]+c[i];
                choice[i][j]=true;
            }
        }
    }
    if(dp[m]!=m) printf("No Solution");
    else{
        vector<int>ans;
        int i=n,j=m;
        while(j>0){
            if(choice[i][j]==true){
                ans.push_back(c[i]) ;
                j-=c[i];
            }
            i--;
        }
        for(int i=0;i<ans.size() ;i++){
            if(i!=0) printf(" ");
            printf("%d",ans[i]);
        }
    }
    return 0;
}
L3-001 凑零钱 (30分) L3-001 凑零钱 (30分) 韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 10 ​4 ​​ 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。 输入格式: 输入第一行给出两个正整数:N(≤10 ​4 ​​ )是硬币的总个数,M(≤10 ​2 ​​ )是韩梅梅要付的款额。第二行给出 N 枚硬币的正整数面值。数字间以空格分隔。 输出格式: 在一行中输出硬币的面值 V ​1 阅读详情

相关推荐

团体程序设计天梯赛竞赛题--登顶题【L3-001 凑零钱】

登顶级 3 道题,每道题 30 分,满分为 90 分。

Pretty Boy Fox的博客 455

L3-001 凑零钱 (30 分)

L3-001 凑零钱 (30 分) 韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 104 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。 输入格式: 输入第一行给出两个正整数:N(≤104)是硬币的总个数,M(≤102)是韩梅梅要付的款额。第二行给出 N 枚硬币的正整数面值。数字间以空格分隔。 输出格式: 在一行中输出硬币的面值 V1≤V2≤⋯≤V**k,满足条件 V1+V2+…

GitHub:https://github.com/myp020301 570

三. zemax光学设计流程+案例

文章目录zemax 基本操作:1. 建立光学基本模型2. 像质评价3. 优化(重点)4. 公差分析简单镜头设计 zemax 基本操作: 1. 建立光学基本模型 2. 像质评价 3. 优化(重点) 对系统设定的约束条件或目标值 统称为操作数。 操作数: 光学特性参数(焦距EFFL,近轴放大率PMAG,入瞳位置EMPP) 像差参数(球差SPHA,彗差COMA,像散ASTI) 边界条件(中心厚度值CTVA,边缘厚度值ETAV) 优化的主要步骤: 设置评价函数和优化操作数 一般小像差系统采用波像差 构建

Taiiiii的博客 8054

PAT -天梯赛 L3-001 凑零钱(01背包问题)

L3-001. 凑零钱时间限制200 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有104枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。输入格式:输入第一行给出两个正整数:N(&lt;=1...

yf224的博客 719

Python+gensim【中文LDA】简洁模型

文章目录完整代码过程详解words_lsdictionarydictionary.doc2bow函数corpuslda 完整代码 from gensim import corpora, models import jieba.posseg as jp # 待分析文本集 text1 = '美国教练坦言,没输给中国女排,是输给了郎平' text2 = '中国女排世界排名第一?真实水平如何,听听巴西和美...

ArYe 2万+

解决Android UVCCamera stopPreview 报错 崩溃 闪退 问题

在使用libuvccamera库的UVCCamera时,经常在调用stopPreview关闭预览的时候,app直接崩溃闪退了,经过综合各种修改源码的方案,已解决这个问题,以下请参考: 首先找到android_usbfs.c,linux_usbfs.c两个原文件,在两个文件中都可以找到这段代码,按如下示例修改: 修改前: for (i = 0; i < num_urbs; i++) { if (urb == tpriv->iso_urbs[i]) { urb_idx = i + 1;

hanye2020的博客 3576

L3-001 凑零钱(dfs)

题目链接 思路: 开始数组a排好序,搜索是对数组a中每个数有 加/不加两种状态,先dfs加状态,再dfs不加状态这样就符合搜到的数组递增,当搜出第一个和为m的数组其排序也是所有符合条件数组中最小的,当已经输出了符合条件的数组后,后面的搜索全部剪枝return掉。 还有个坑点就是所有货币加起来可能不够 m,所以该情况要特判输出No Solution。 代码: #include <bits/stdc++.h> #define fastio ios::sync_with_stdio(false), c

Belief_7 339

泛微OA E9文档管理优化:临时文件清理与存储配置指南

本文深入解析了泛微OA E9系统性能下降的常见原因——临时文件堆积,并提供了完整的优化配置指南。文章详细介绍了临时文件的产生机制,并手把手指导管理员如何通过修改存储路径、调整保留时间、设置白名单等关键配置,有效清理与管理系统临时文件,从而释放存储空间,提升系统运行效率与稳定性。

tree8的博客 431

团体程序设计天梯赛 L3-001 凑零钱

团体程序设计天梯赛-练习集题解

风高云散的博客 761

华为OD机试真题 新系统【小花获胜的奶茶】

华为OD机试真题 新系统【小花获胜的奶茶】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小花获胜的奶茶】多语言题解。

qq_45776114的博客 384

Python爬虫实战:Boss直聘职位数据采集实战 - Playwright + 结构化解析完整方案(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 2186

PTA -- L3-001凑零钱 C++

因为我们要输出最小序列,从小到大排序后做动态规划,我们从前往后枚举时,如果当前数可选(假设当前枚举到了第i个数,即j>=a[i]且f[i+1][j-a[i]]不为0,如果f[i+1][j-a[i]]为0,则表示从第i+1个硬币到不了第i个硬币),则必选(输出a[i]),否则必不选。f数组用之前要初始化,由于i是倒序枚举的,所以在状态表示中我们要用到i+1,所以对于所有的i从1~n+1,f[i][0](从第i个及i之后的硬币中选,总数刚好为0元,就只有一种情况,就是一个硬币都不选)所以都要初始化为1。

m0_74346595的博客 693

大数据分析案例-基于决策树算法构建信用卡违约预测模型

本项目旨在使用机器学习等算法构建信用卡违约预测模型,主要应用在金融相关领域,根据用户以往的行为数据来预测是否会违约,有利于商业银行防范和化解信用卡风险,完善信用卡违约风险管理工作。本次实验通过探索性分析以及使用决策树构建信用卡违约模型,得出以下结论:1.可透支金额主要集中在0~200000之间。2.性别对于可透支金额的影响较小。3.受教育程度和婚姻状况对可透支金额的影响较大。4.决策树模型的准确率为0.88,模型效果还有待提高。

m0_64336780的博客 7574

L3-001 凑零钱 (01背包)

题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805054207279104 L3-001凑零钱(30 分) 韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有10​4​​枚来自各个星球的硬币,需...

ayyyyy_zc的博客 690

YOLOv8改进 | 注意力篇 | 一文带你改进GAM、CBAM、CA、ECA等通道注意力机制和多头注意力机制

官方论文地址:官方论文地址点击此处即可跳转官方代码地址:官方代码地址点击此处即可跳转GAM旨在通过设计一种机制,减少信息损失并放大全局维度互动特征,从而解决传统注意力机制在通道和空间两个维度上保留信息不足的问题。GAM采用了顺序的通道-空间注意力机制,并对子模块进行了重新设计。具体来说,通道注意力子模块使用3D排列来跨三个维度保留信息,并通过一个两层的MLP增强跨维度的通道-空间依赖性。

Snu77的博客 4万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

L3-001. 凑零钱

L3-001. 凑零钱 题目链接:https://www.patest.cn/contests/gplt/L3-001 动态规划 这道题一看就知道应该用背包思想来做,不过想了好久没什么思路(dp实在是渣),最后还是鼓捣出来了ac代码QAQ,细节加了注释。 代码如下: 1 #include<cstdio> 2 #include<algorithm> 3...

weixin_34266504的博客 105

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

L3-001 凑零钱 - java

现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。个空格分隔,行首尾不得有多余空格。若解不唯一,则输出最小序列。枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。然后从大到小枚举每个重量可达的最大价值为多少。枚硬币的正整数面值。如果有说错的 或者 不懂的 尽管提 嘻嘻。是韩梅梅要付的款额。为了打印路劲时,输出最小的序列。假设每个物品的重量以及价值都为。在一行中输出硬币的面值。时,是否放入第i个物品。的时候的最大价值为多少。

谢谢 啊sir的博客 1223

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

L3-001 凑零钱 (30 分)「爆搜」或 「01背包 + 输出路径」

L3-001 凑零钱 (30 分) 题目描述: 给你n种货币,每种只能用一次,问能不能凑出m元,输出字典序最小的 思路1:「爆搜yyds」 因为M很小,才100,所以剪枝的作用很大,排序以后爆搜就行 注意特判一下这n个数的和与m的关系,如果小于m,则一定不可以凑出来,直接输出就行,不然会TLE在最后一个点 #include <bits/stdc++.h> using namespace std; #define endl '\n' #define inf 0x3f3f3f3f #def

Suryxin's blogs 2660

L3-001 凑零钱 (30 分)(简单dfs)

【题解】 题目要求输出字典序最小,所以我们先把给定序列升序排序,然后得到的第一个结果显然就是字典序最小的可能结果。 最后一个测试样例超时的点在于,可能全部加起来都不足以凑到m,所以我们要先判断一下。 【代码】 #include<bits/stdc++.h> using namespace std; int n,m,cnt=0,f=0; int a[10005]; int an...

菜鸡成长史 2751

L3-001凑零钱题解

L3-001凑零钱 韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 10000 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。 输入格式: 输入第一行给出两个正整数:N(≤10000 )是硬币的总个M(≤10​0 )是韩梅梅要付的款额。第二行给出 N 枚硬币的正整数面值。数字间以空格分隔。 输出格式: 在一行中输出硬币的面值 V​1​​ ≤V​2≤⋯≤Vk,满足条件 V1

erxiong111的博客 2199
上一篇: L2-028 秀恩爱分得快
下一篇: L3-003 社交集群
ChenyutingZJU
博客等级 码龄10年 18粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值