洛谷P1474 货币系统 Money Systems

P1474 货币系统 Money Systems

  • 250通过
  • 553提交
  • 题目提供者该用户不存在
  • 标签USACO
  • 难度普及/提高-

提交  讨论  题解

最新讨论

  • 暂时没有讨论

题目描述

母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统。由于它们特殊的思考方式,它们对货币的数值感到好奇。

传统地,一个货币系统是由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之间。

输入输出格式

输入格式:

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

第一行: 二个整数,V 和 N 。

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

输出格式:

输出格式:

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

输入输出样例

输入样例#1

3 10

1 2 5

输出样例#1

10

说明

翻译来自NOCOW

USACO 2.3

分析:数据很大,有要求方案数,想到dp,发现这道题的本质就是想尽办法凑一个数,给定的数字可以无限用,于是想到了完全背包.和普通的完全背包有点差别,这里要求方案数,取了这个数相当于方案数没有变,不能+1,可以知道如果一个数能够取,那么有取或不取两种策略,如果一个数不能取,那么就只有不能取的方案了,那么状态转移方程就出来了

f[i][j] = f[i-1][j - c[i]] + f[i-1][j] (j >= c[i])  f[i][j] = f[i-1][j] (j < c[i]) 其中c为可以用的钱.

交上去的时候小数据全过了,大数据WA了,那么就可以知道绝对是爆了范围,由此可知本题要用long long

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

long long f[30][10010], v, n, c[30];

int main()
{
    scanf("%lld%lld", &v, &n);
    for (int i = 1; i <= v; i++)
        scanf("%lld", &c[i]);
    for (int i = 1; i <= v; i++)
        f[i][0] = 1;
    for (int i = 1; i <= v; i++)
        for (int j = 1; j <= n; j++)
            if (j >= c[i])
                f[i][j] = f[i - 1][j] + f[i][j - c[i]];
            else
                f[i][j] = f[i - 1][j];
    printf("%lld\n", f[v][n]);
    //while (1);

    return 0;
}
时间: 2024-10-25 00:41:43

洛谷P1474 货币系统 Money Systems的相关文章

洛谷 P1474 货币系统 Money Systems

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

P1474 货币系统 Money Systems

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

P1474 货币系统 Money Systems(完全背包)(大水题)

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

P2347 砝码称重 &amp; P1474 货币系统 Money Systems

背包方案数模板题练习 第一道题是另一道也叫做"砝码称重"的前置技能,第二道题是我搜背包方案数的时候出来的. 两道题有一点区别,就是多重(01)背包和完全背包. 第一道题因为数据水,所以多重背包也能过.但是也要学会如何写多重背包!!! 第二道题是完全背包,每一种货币可以拿无穷多次. 这种背包可以理解为价值为0,只有重量. 直接给代码: 第一份的: #include<cstdio> const int b[] = {0, 1, 2, 3, 5, 10, 20}; int a[7

洛谷 P1474 [USACO2.3]货币系统 Money Systems

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

[luoguP1474] 货币系统 Money Systems(背包)

传送门 背包 ——代码 #include <cstdio> #include <iostream> #define LL long long int v, n; LL f[10001]; inline int read() { int x = 0, f = 1; char ch = getchar(); for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1; for(; isdigit(ch); ch = getchar(

洛谷 P3106 [USACO14OPEN]GPS的决斗Dueling GPS&#39;s

P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 题目描述 Farmer John has recently purchased a new car online, but in his haste he accidentally clicked the "Submit" button twice when selecting extra features for the car, and as a result the car ended up equip

洛谷P1158 导弹拦截 排序

---恢复内容开始--- 洛谷P1158 导弹拦截 排序 算是有技巧的枚举吧 题意 用两套系统来拦截导弹,一个系统的费用等于这个系统拦截的导弹中离他最远的那颗导弹和系统的距离 的平方 排序 将每颗导弹按距离系统1 的距离排序,然后枚举n--0 选这些导弹为系统1最远能够拦截的导弹 然后就可以更新下一次 系统2要拦截的导弹 中离系统2 最远的一颗 1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #

洛谷 P1656 炸铁路

P1656 炸铁路 题目提供者kkksc03 标签图论搜索/枚举洛谷原创 难度普及/提高- 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵. 该国有n个城市,这些城市以铁路相连.任意两个城市都可以通过铁路直接或者间接到达. uim发现有些铁路被毁坏之后,某两个城市无法互相通过铁路到达.这样的铁路就被称为key road. uim为了尽快使该国的物流系统瘫痪,希炸毁铁路,已达到存在某两个城市无法互相通过铁路到达的效果. 然而,只有一发炮