usaco2.3.4 Money Systems

【USACO题库】2.3.4 Money Systems货币系统 题目描述 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。他们对货币的数值感到好奇。传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。举例来说, 使用一个货币系统 {1,2,5,10,...}产生 18单位面值的一些可能的方法是:18*1, 9*2, 8*2+2*1, 3* 阅读详情

一 原题

Money Systems

The cows have not only created their own government but they have chosen to create their own money system. In their own rebellious way, they are curious about values of coinage. Traditionally, coins come in values like 1, 5, 10, 20 or 25, 50, and 100 units, sometimes with a 2 unit coin thrown in for good measure.

The cows want to know how many different ways it is possible to dispense a certain amount of money using various coin systems. For instance, using a system of {1, 2, 5, 10, ...} it is possible to create 18 units several different ways, including: 18x1, 9x2, 8x2+2x1, 3x5+2+1, and many others.

Write a program to compute how many ways to construct a given amount of money using supplied coinage. It is guaranteed that the total will fit into both a signed long long (C/C++) and Int64 (Free Pascal).

PROGRAM NAME: money

INPUT FORMAT

The number of coins in the system is V (1 <= V <= 25).

The amount money to construct is N (1 <= N <= 10,000).

Line 1:Two integers, V and N
Lines 2..:V integers that represent the available coins (no particular number of integers per line)

SAMPLE INPUT (file money.in)

3 10
1 2 5

OUTPUT FORMAT

A single line containing the total number of ways to construct N money units using V coins.

SAMPLE OUTPUT (file money.out)

10



二 分析

完全背包。


三 代码

运行结果1:
USER: Qi Shen [maxkibb3]
TASK: money
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.000 secs, 6524 KB]
   Test 2: TEST OK [0.000 secs, 6524 KB]
   Test 3: TEST OK [0.000 secs, 6524 KB]
   Test 4: TEST OK [0.000 secs, 6524 KB]
   Test 5: TEST OK [0.011 secs, 6524 KB]
   Test 6: TEST OK [0.011 secs, 6524 KB]
   Test 7: TEST OK [0.000 secs, 6524 KB]
   Test 8: TEST OK [0.000 secs, 6524 KB]
   Test 9: TEST OK [0.000 secs, 6524 KB]
   Test 10: TEST OK [0.086 secs, 6524 KB]
   Test 11: TEST OK [0.000 secs, 6524 KB]
   Test 12: TEST OK [0.335 secs, 6524 KB]
   Test 13: TEST OK [0.000 secs, 6524 KB]

All tests OK.

YOUR PROGRAM ('money') WORKED FIRST TIME! That's fantastic -- and a rare thing. Please accept these special automated congratulations.

AC代码1:
/*
ID:maxkibb3
LANG:C++
PROG:money
*/

#include<cstdio>

const int MAX_V = 30;
const int MAX_N = 10005;
int v, n;
int a[MAX_V];
long long dp[MAX_V][MAX_N];

int main() {
    freopen("money.in", "r", stdin);
    freopen("money.out", "w", stdout);
    scanf("%d%d", &v, &n);
    for(int i = 1; i <= v; i++) scanf("%d", &a[i]);
    dp[0][0] = 1;
    for(int i = 1; i <= v; i++) {
        for(int j = 0; j <= n; j++) {
            for(int k = 0; k <= j / a[i]; k++) {
                dp[i][j] += dp[i - 1][j - k * a[i]];
            }
        }
    }
    printf("%lld\n", dp[v][n]);
    return 0;
}

运行结果2:
USER: Qi Shen [maxkibb3]
TASK: money
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.000 secs, 6524 KB]
   Test 2: TEST OK [0.000 secs, 6524 KB]
   Test 3: TEST OK [0.000 secs, 6524 KB]
   Test 4: TEST OK [0.000 secs, 6524 KB]
   Test 5: TEST OK [0.000 secs, 6524 KB]
   Test 6: TEST OK [0.000 secs, 6524 KB]
   Test 7: TEST OK [0.000 secs, 6524 KB]
   Test 8: TEST OK [0.000 secs, 6524 KB]
   Test 9: TEST OK [0.000 secs, 6524 KB]
   Test 10: TEST OK [0.000 secs, 6524 KB]
   Test 11: TEST OK [0.000 secs, 6524 KB]
   Test 12: TEST OK [0.000 secs, 6524 KB]
   Test 13: TEST OK [0.000 secs, 6524 KB]

All tests OK.

Your program ('money') produced all correct answers! This is your submission #2 for this problem. Congratulations!

AC代码2:
/*
ID:maxkibb3
LANG:C++
PROG:money
*/

#include<cstdio>

const int MAX_V = 30;
const int MAX_N = 10005;
int v, n;
int a[MAX_V];
long long dp[MAX_V][MAX_N];

int main() {
    freopen("money.in", "r", stdin);
    freopen("money.out", "w", stdout);
    scanf("%d%d", &v, &n);
    for(int i = 1; i <= v; i++) scanf("%d", &a[i]);
    dp[0][0] = 1;
    for(int i = 1; i <= v; i++) {
        for(int j = 0; j <= n; j++) {
            dp[i][j] = dp[i - 1][j];
            if(j >= a[i]) dp[i][j] += dp[i][j - a[i]];
        }
    }
    printf("%lld\n", dp[v][n]);
    return 0;
}


STM32超声波避障小车硬件设计与实时测距实现 超声波测距是嵌入式系统中经典的环境感知技术,其原理基于声波在空气中的传播时间与距离的线性关系,通过精确计时实现非接触式距离测量。该技术具备成本低、抗光干扰强、算法简洁等优势,广泛应用于智能小车、机器人避障、液位监测等场景。工程落地的关键在于硬件信号完整性(如5V/3.3V电平匹配)、微秒级定时精度(依赖高稳定外部晶振与输入捕获模式)以及强干扰环境下的数据鲁棒性(需软硬协同滤波)。本文以STM32F103C8T6为平台,深入解析HC-SR04模块的时序闭环控制、TIM3输入捕获双沿测量、L298N电机状态机驱 阅读详情

相关推荐

cocos2dx中DrawNode画线锯齿和非凸多边形填充

记录一下在cocos2dx中使用DrawNode所遇到的2个问题 1.画线锯齿问题 ios版本下,在AppController.mm中设置CCEAGLView的multiSampling和numberOfSamples。如下图 CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds]

hello-world 5414

【USACO 2.3.4】货币系统

【描述】 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统。由于它们特殊的思考方式,它们对货币的数值感到好奇。 传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。 母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。 举例来说, 使用一个货币系统 {1,2,5,10,...}产生 18单位面值的一些可能的方法是...

Gregory99174的博客 645

AI智能体升级实战:从规则匹配到Function Call,准确率提升86%的技术选型之路

AI智能体升级实战:从规则匹配到Function Call的技术演进 文章记录了AI邮件助手从传统规则匹配升级到Function Call的技术迭代过程。通过案例分析,揭示了规则匹配的三大核心问题:覆盖不全(用户表达千变万化)、组合困难(多条件容易漏掉)、维护噩梦(每个需求都要新增规则)。测试数据显示,规则匹配在复杂查询中的准确率仅51%,严重影响用户体验。 技术团队对比了三种升级方案:1) 继续优化规则匹配(天花板明显);2) 微调专用NLP模型(成本高);3) 采用Function Call(灵活高效)

yweng18的博客 1079

USACO2.3.4 Money Systems (money)

简单的dp问题 dp[ i ]表示组合出 i 可以有多少种方式 则再下一种货币x出现时,则有   for  i  =  x  to  n      dp[ i ] += dp [ i - x ] dp[ n ]即为答案 /* ID:xsy97051 LANG:C++ TASK:money */ #include #include #include using namespac

xsy_victory的专栏 404

Ubuntu16.04下禁用scp、sftp和winscp

在上一篇博文《Ubuntu16.04 搭建FTP服务器,设置用户权限为只许上传、禁止下载和删除》中,我讲述了Ubuntu16.04下配置FTP,并且设定用户权限为只能上传数据,禁止下载和删除数据。这算在FTP层面封堵了服务器数据泄露的途径。 但是,Ubuntu系统的scp和sftp还是起作用的,理论上只要能用本地机器ping通服务器,就可以用scp和sftp下载数据,这还是存在数据泄露可能的,所...

HPC&Geophysics攻城狮 5735

解决Windows 10更新失败错误代码0x80070643

在Windows 10操作系统的更新过程中,用户时常会遇到各类错误代码,这些代码通常成为顺利完成更新的绊脚石。其中,错误代码0x80070643是一个较为常见的更新失败提示,它可能导致系统更新停滞不前。面对这一挑战,本文将详细介绍如何有效解决这一错误,帮助用户顺利完成Windows 10的更新。

nntxthml的博客 1827

USACO 2.3.4 Money Systems 解题报告

Money Systems The cows have not only created their own government but they have chosen to create their own money system. In their own rebellious way, they are curious about values of coinage. Traditi...

weixin_30840573的博客 169

详解如何用爬虫工具批量采集阿里巴巴批发网商品数据

本文主要介绍如何使用后羿采集器的智能模式,免费采集阿里巴巴批发网商品的批发价格、发货时间、是否代发等信息。 采集字段: 商品标题、商品链接、图片链接、标签1、标签2、标签3、价格、30天成交数、 评价、店铺 功能点目录: 如何对采集字段进行配置 如何采集列表+详情页类型网页 采集结果预览: 下面我们来详细介绍一下如何免费采集1688批发网的商品数据,我们以“羽绒服女”为例,具体步骤如下: 步骤一...

weixin_43777427的博客 1万+

USACO 2.3.3 货币系统 Money Systems

题解 完全背包问题,讨论的是放完的方案数,只要把各种情况加起来就好了。 我给了一个2维空间的答案比较直观,可以压缩到一维,但需要推一下公式。 Code // head files excluded using namespace std; int n,m,k; long long f[2][10002]; int cot[26]; int main(void){ cin&g...

蟋蟀的博客 367

【异常】飞书OpenClaw机器人 HTTP 401: Invalid Authentication 报错排查与解决方案

HTTP 401 是HTTP协议标准定义的未授权(Unauthorized)状态码,核心含义为请求方身份认证无效,服务端拒绝执行本次请求。飞书开放平台服务端对自建机器人的全链路鉴权校验失败。无论是机器人接收飞书事件推送的上行请求,还是机器人主动调用飞书开放平台API的下行请求,只要身份凭证无效、鉴权逻辑校验不通过,飞书服务端就会返回该报错,并最终透传到飞书客户端会话窗口中。

奶爸的编程之路,也就一周冷个三天 3759

华为OD机试真题 新系统 - WIFI设备网络规划 (Java/Py/C/C++/Js/Go)

本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2016

USACO 2.3.4 Money Systems

这道题是整数拆分的变形。

Lostwinder的专栏 645

MTK Android 12 Clone Project 克隆项目

本文介绍了如何使用MTK Android 12 Clone Project 克隆一个新的项目。通过使用绝对路径执行Perl脚本,并根据需要选择升级或降级位数,可以成功地生成一个新的项目并进行编译。希望本文对xdm有所帮助。

我其实什么都不会 942

USACO - 2.3.4 - Money Systems

  原创文章转载请注明出处 摘要:动态规划 ,完全背包问题 一. 题目翻译 1. 描述: 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统。由于它们特殊的思考方式,它们对货币的数值感到好奇。 传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。         母牛想知道有多少种不同的方...

12312312341234 187

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

USACO 2.3.4 Money Systems 动态归划

Money Systems The cows have not only created their own government but they have chosen to create their own money system. In their own rebellious way, they are curious about values of coinage. Tradi

403

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Money Systems_usaco2.3.4_dp

题目描述 Description母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统。由于它们特殊的思考方式,它们对货币的数值感到好奇。传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。举例来说, 使用一个货币系统 {1,2,5,10,…}产生 18单位面值的一些可能的方法是:18x

olahiuj的博客 465

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【USACO题库】2.3.4 Money Systems货币系统 题解

举例来说, 使用一个货币系统 {1,2,5,10,...}产生 18单位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它。传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。写一个程序来计算有多少种方法用给定的货币系统来构造一定数量的面值。(1<= V<=25)可用的货币 V 个整数 (每行一个 每行没有其它的数)。单独的一行包含那个可能的构造的方案数。

cjm0230_yyds的博客 154

USACO 2.3.4 Money Systems dp

dp[i]+=dp[i-a]; dp[i]表示组成数 i 的方式的个数 View Code 1 #include <stdio.h> 2 3 int main() 4 { 5 int n,m,i,j,a; 6 long long dp[10005]={0}; 7 scanf("%d%d",&n,&m); 8 dp...

diaopi1575的博客 132

USACO 2.3.4 Money Systems(母函数)

思路:这又是一道母函数的题目,与前面那一道的区别在于,这次用的钱币是无限使用的。以题目给的数据为例,用1,2,5来凑出10。也就是模拟(1+x+x^2+x^3+x^4+x^5+x^6+x^7+x^8+x^9+x^10)(1+x^2+x^4+x^6+x^8+x^10)(1+x^5+x^10)意义很明确,对于1元的钱如果凑够10元,最多可以用10个1元来凑,所以又11种取法,对于2元的钱如果凑够10元

supersnow0622的专栏 907

USACO 2.3.4 Money Systems 货币系统(完全背包)

Description 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。 [In their own rebellious way],,他们对货币的数值感到好奇。 传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。 母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。 举例来说, 使用一个货币系统 {1,2,5,1...

weixin_30363981的博客 279

Money Systems (money) (USACO 2.3.4)题解

基本题啊,可是我却不会做。 今天,两道基本的背包题目,只有一个做出来了。。 { ID:lstlst12 PROG:money LANG:PASCAL } program money; const MaxN=10000; var v

206

USACO 2.3 Money Systems 货币系统

题目大意 给出一个货币系统,即你有哪些面值的货币,问给出的数值有几种组成方式。   样例输入&amp;输出 sample input 3 10 1 2 5 sample output 10   分析&amp;反思 背包问题,复习一下。 完全背包,只不过存储的是方案数。 等于以前是判断方案是否更优,现在是有新方案就传过来。   代码 #include...

DWAE86的博客 576
上一篇: usaco2.3.1 Longest Prefix
下一篇: usaco2.3.5 Controlling Companies
max_kibble
博客等级 码龄11年 2粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值