`
zqynux
  • 浏览: 36367 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

USACO 2.3 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. 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,5,10,20 或 25,50, 和 100的单位面值组成的。

母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。

举例来说, 使用一个货币系统 {1,2,5,10,...}产生 18单位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它。写一个程序来计算有多少种方法用给定的货币系统来构造一定数量的面值。保证总数将会适合long long (C/C++) 和 Int64 (Free Pascal),即在0 到2^63-1之间。

格式
PROGRAM NAME: money

INPUT FORMAT:

(file money.in)

货币系统中货币的种类数目是 V (1<= V<=25)。要构造的数量钱是 N (1<= N<=10,000)。

第 1 行: 二整数,V 和 N 。

第 2 行: 可用的货币的面值 。

OUTPUT FORMAT:

(file money.out)

单独的一行包含那个可能的用这v种硬币凑足n单位货币的方案数。

SAMPLE INPUT
3 10
1 2 5
SAMPLE OUTPUT
10

======================= 华丽的分割线 =======================
  看到这题就知道又是最复杂, 最有用的DP问题..(天啊~!DP我怎么还没开窍`?)
  dp方程:
  f[j] 代表构造价值为j的方法有多少种`?
  f[j] += f[j - c[i]]
  DP我真的不会解释,, 下次把背包九讲仔细看下~!!!
  先把代码上上吧~
/*
LANG: C
ID: zqy11001
PROG: money
*/
#include <stdio.h>
#define getint(i) scanf("%d", &i)

long long f[10001];

int main(void)
{
	int n, m;
	int i, j, k, t;
	freopen("money.in", "r", stdin);
	freopen("money.out", "w", stdout);
	getint(n);
	getint(m);
	f[0] = 1;
	for(i = 1; i <= n; i++){
		getint(t);
		for(j = t; j <= m; j++){
			f[j] += f[j - t];
		}
	}
	printf("%lld\n", f[m]);
	return 0;
}
0
0
分享到:
评论

相关推荐

    usaco2.3解题报告1

    【标题】:“usaco2.3解题报告1”涉及的知识点主要集中在动态规划和数据结构上,特别是字符串处理和二叉树。 【描述】:“usaco2.3解题报告1”描述了一个生物学背景的问题,需要计算一个大写字母序列最长的前缀可以...

    USACO 题目

    USACO(美国计算机奥林匹克竞赛)是针对高中生的一项编程竞赛,旨在提高参赛者的算法设计、问题解决和编程技能。这个压缩包文件包含了USACO网站上的题目,对于准备机考和提升编程能力非常有帮助。下面我们将深入探讨...

    USACO1.4~2.3C语言题解

    《USACO1.4~2.3C语言题解》是针对USACO(美国计算机奥林匹克)编程竞赛中1.4至2.3阶段的题目解析,主要使用C语言进行解答。USACO旨在提升高中生的算法设计和编程能力,而C语言作为基础且高效的编程语言,常常被用于...

    usaco 源程序 section2.3---section 5.5

    这个压缩包包含了USACO章节2.3到5.5的源程序,涵盖了多个阶段的学习内容。 USACO的每个章节通常会讲解一个或多个编程概念,包括基础的算法、数据结构以及更复杂的主题。让我们详细探讨这些章节可能涉及的知识点: ...

    usaco 合集usaco 合集usaco 合集

    《USACO 合集:全面解析与学习指南》 USACO,全称为USA Computing Olympiad,是一项针对中学生举办的在线编程竞赛,旨在提升参赛者的算法设计和问题解决能力。这个合集提供了丰富的资源,包括英文原题、中文译题、...

    usaco.rar_USACO 翻译 下载_usaco _usaco 翻译

    总的来说,“usaco.rar”提供的翻译资源是学习和准备USACO竞赛的重要工具,它能够帮助你系统地学习信息学知识,提升编程技能,为参加类似竞赛打下坚实的基础。无论你是初学者还是有一定基础的程序员,都可以从中...

    usaco 2010-2011

    ### USACO 2010-2011 季度竞赛概览与关键信息 #### 一、概述 美国计算机奥林匹克(USACO)是面向全球中学生的计算机科学竞赛,旨在发掘并培养计算机科学领域的年轻人才。USACO 2010-2011 季度竞赛于 2010 年 11 月...

    usaco历年测试数据

    USACO(美国计算机奥林匹克竞赛)是面向全球中学生的一项编程竞赛,主要涉及算法和问题解决能力。这个压缩包文件“usaco历年测试数据”包含了该赛事历年的测试题目和样例输入输出数据,这对于参赛者准备比赛或者提升...

    USACO题集及答案

    USACO,全称为United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、问题解决和编程能力。该比赛每年举行,分为青铜、白银、黄金和铂金四个级别,难度逐渐递增。...

    usaco心得及总结

    **Money(多重背包问题)** - **问题**: 构成特定背包的不同方案总数。 - **方法**: 将一般的多重背包问题方程中的 `min` 改为 `sum`。 **Nuggets** - **问题**: 找出所有不能恰好放入的背包大小的最大值。 - **...

    USACO 1.1 c++源程序

    C++是一种强大的、通用的编程语言,尤其在系统编程、嵌入式系统、高性能计算和游戏开发等领域广泛应用。C++以其高效、灵活和面向对象的特性吸引了众多程序员。 在C++编程中,USACO的题目通常涉及基础算法和数据结构...

    USACO翻译及题解

    USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者在算法设计、问题解决以及计算机科学基础方面的技能。这个压缩包文件提供了丰富的资源,帮助参赛者或学习者更好...

    usaco traning全部数据

    【标题】"usaco traning全部数据" 涉及的是一个编程竞赛训练平台——USACO(USA Computing Olympiad)的数据集。USACO是一个专门为美国中学生设计的在线编程竞赛,旨在提升参赛者的算法设计和编程能力,特别是在解决...

    USACO历年比赛测试数据:2004年

    OI则是Online Judge的缩写,通常指的是在线评测系统,参赛者提交代码后,系统会自动运行测试样例,给出结果,是编程竞赛常用的一种评判方式。 在"USACO 2004"这个压缩包中,你可能会找到多个子文件,每个子文件代表...

    USACO答案及详解

    某些USACO题目的答案,很详细,代码清晰结构良好,算法高效易于调试

    USACO题解+代码+翻译

    总的来说,这份"USACO题解+代码+翻译"压缩包是一套全面的学习材料,它可以帮助你系统地提升编程技能,增强解决复杂问题的能力,对于参加USACO或其他类似的编程竞赛,甚至是日常的编程学习都是非常有价值的。...

    USACO历年比赛测试数据:2003年

    USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,是一项面向中学生的编程竞赛,旨在提升学生的算法设计、编程和问题解决能力。该比赛通常包括训练营和一系列在线比赛,最终选拔出优秀选手代表美国参加...

    usaco题解+程序

    通过训练和参加USACO,学生可以系统地学习和掌握C++、Java等编程语言,以及基础算法和数据结构,如排序、搜索、图论、动态规划等。 压缩包中的"USACO"可能包含以下内容: 1. 题解:这些题解详细解释了如何理解和...

    USACO历年比赛测试数据:2005年

    USACO,全称为United States Computer Olympiad,是一项面向美国中学生的编程竞赛,旨在培养青少年在算法设计、问题解决和计算机科学方面的技能。这个压缩包包含的是2005年度USACO比赛的测试数据,对于参赛者或者对...

Global site tag (gtag.js) - Google Analytics