英文原题 中文题译
大意:给定钞票面值,问给定的钱数有多少种付钱方式。
设有m种钞票,每种面值为v[i](0<=i<m),钱数为n的付钱方式为s[n],则s[n]=sum_{0<=i<m}{s[n-v[i]]}。这是最简单直接了当的想法。但不对:这样会导致重复计数。重新考虑,事实上我们是在找方程sum_{0<=i<m}{x[i]*v[i]}=n的解的数目,应该对i做规划。显然有sum_{0<=i<m-1}{x[i]*v[i]}=n-x[m-1]*v[m-1]。令DP[j][s]=|{x[i]| sum_{0<=i<j}{x[i]*v[i]}=s}|即用前j种钞票付钱s的方式的数量,则有DP[j][s]=sum_{0<=k*v[j]<=s}DP[j-1][s-v[j]*k],而DP[m][n]即为我们要的解。注意初始值:DP[0][s]=[s%v[0]==0],这里s=0时s[i][0]=1。看一下数据限制:1<=n<=10,000, 1<=m<=25,完全没问题。不过,注意到这个递归方程中只用到上一层的数据,因而用一维数组就可以搞定了。
大意:给定钞票面值,问给定的钱数有多少种付钱方式。
设有m种钞票,每种面值为v[i](0<=i<m),钱数为n的付钱方式为s[n],则s[n]=sum_{0<=i<m}{s[n-v[i]]}。这是最简单直接了当的想法。但不对:这样会导致重复计数。重新考虑,事实上我们是在找方程sum_{0<=i<m}{x[i]*v[i]}=n的解的数目,应该对i做规划。显然有sum_{0<=i<m-1}{x[i]*v[i]}=n-x[m-1]*v[m-1]。令DP[j][s]=|{x[i]| sum_{0<=i<j}{x[i]*v[i]}=s}|即用前j种钞票付钱s的方式的数量,则有DP[j][s]=sum_{0<=k*v[j]<=s}DP[j-1][s-v[j]*k],而DP[m][n]即为我们要的解。注意初始值:DP[0][s]=[s%v[0]==0],这里s=0时s[i][0]=1。看一下数据限制:1<=n<=10,000, 1<=m<=25,完全没问题。不过,注意到这个递归方程中只用到上一层的数据,因而用一维数组就可以搞定了。
/* ID: blackco3 TASK: money LANG: C++ */ #include <iostream> #include <memory.h> using namespace std; #define _max_num_ 10000 #define _max_type_ 25 long long _DP[_max_type_][_max_num_+1], _val[_max_type_]; int _type, _num ; int main() { freopen("money.in", "r", stdin); freopen("money.out", "w", stdout); cin >> _type >> _num ; for( int i=0; i<_type; i++ ) cin >> _val[i] ; memset( _DP, 0, sizeof(_DP) ); for( int i=0; i<=_num; i+=_val[0] ) _DP[0][i]=1 ; for( int i_type=1; i_type<_type; i_type++ ) for( int i_num=0; i_num<=_num; i_num++ ) for( int i_used=0; i_used<=i_num; i_used+=_val[i_type] ) _DP[i_type][i_num] += _DP[i_type-1][i_num-i_used] ; cout << _DP[_type-1][_num] << endl ; return 0; }
发表评论
-
USACO Training Section 4.2 Cowcycles
2010-01-31 21:11 888英文原题 中文题译 ... -
USACO Training Section 4.2 Job Processing
2010-01-30 17:31 1136英文原题 中文题译 大意: 有N个工件,每个工件要经 ... -
USACO Training Section 4.2 Drainage Ditches ISAP非递归和多路增广递归
2010-01-29 19:39 1852郁闷。不小心覆盖了重 ... -
USACO Training Section 4.2 The Perfect Stall 匈牙利算法的递归和非递归实现
2010-01-28 21:21 1647英文原题 中文题译 ... -
USACO Training Section 4.1 Cryptcowgraphy 奶牛密码
2010-01-27 20:58 1200英文原题 中文题译 大意: 奶牛们要从农场逃跑 ... -
USACO Training Section 4.1 Beef McNuggets
2010-01-26 21:37 975英文原题 中文题译 大意: 给定N个正整数, ... -
USACO Training Section 4.1 Fence Loops
2010-01-24 20:14 1074英文原题 大意: 农夫布朗的牧场上的篱笆已经失 ... -
USACO Training Section 3.4 Closed Fences
2010-01-23 17:50 1408英文原题 题意 一个 ... -
USACO Training Section 3.4 American Heritage
2010-01-21 23:19 786英文原题 大意:有一个由最多26个大写字母构成的二叉树 ... -
USACO Training Section 3.4 Raucous Rockers
2010-01-21 23:09 801英文原题 大意:有S首歌,要放到D个CD里。每首歌有一个 ... -
USACO Training Section 3.4 Electric Fence
2010-01-21 12:57 976英文原题 大意:给定一个三角形(0,0),(m,n),( ... -
USACO Training Section 3.3 Riding the Fences
2010-01-20 23:38 1211英文原题 中文题译 经典的求欧拉路径:给定最多两个奇 ... -
USACO Training Section 3.3 Shopping Offers
2010-01-19 22:18 919英文原题 中文题译 这是个与日常生活相关的题。商场促销 ... -
USACO Training Section 3.3 A Game
2010-01-19 20:54 1097英文原题 有如下一个双人游戏:N(2 <= N & ... -
USACO Training Section 3.3 Home on the Range
2010-01-19 19:36 778英文原题 中文题译 大意:给定一个01矩阵,计算其中全为 ... -
USACO Training Section 3.3 Camelot
2010-01-19 03:39 1235英文原题 中文题译 ... -
USACO Training Section 3.2 Sweet Butter
2010-01-19 00:10 1051英文原题 中文题译 大意:农场之间有路构成稀疏无向图,若 ... -
USACO Training Section 3.2 Magic Squares
2010-01-18 23:11 934英文原题 中文题译 大意:有人发明了一种有8个块三种变换 ... -
USACO Training Section 3.2 Feed Ratios
2010-01-18 20:52 1312英文原题 中文题译 大意:给出整数a[i][j]和 ... -
USACO Training Section 3.2 Spinning Wheels
2010-01-18 19:37 871英文原题 中文题译 大意:有五个纺车飞轮,每个都有最多五 ...
相关推荐
usaco section2.3--section5.5源程序。。。。。。。。。。。。。。。。
USACO1.4~2.3C语言题解 绝对能通过
ACM----USACO Training(解题博客网),提供了USACO Training解题的代码,可以参考一下
USACO全部译题 USACO Training Program Gateway
自己写的usaco_training带代码。供参考,有一道题是cheat的。自己看吧。
usaco2.3解题报告1
usaco测试数据+标程 usaco的section1到section5的所有测试数据 以及标准程序
usaco解题报告,就是usaco.training.gateway上面的题目全解
USACO题解+代码+翻译,好东西,超级齐全,对大家帮助不小,特别是现在nocow挂了
[USACO 1.1.4]破碎的项链.cpp
2.3 Section 2.3 2.4 Section 2.4 3 Chapter3 3.1 Section 3.1 3.2 Section 3.2 3.3 Section 3.3 3.4 Section 3.4 4 Chapter4 4.1 Section 4.1 4.2 Section 4.2 4.3 Section 4.3 4.4 Section 4.4 5 Chapter5 5.1 ...
USACO_培训USACO_培训Ride.java-> Gift1.java->
USACO training 教程翻译合集(清晰明确)
USACO培训页面美国计算机奥林匹克训练页2015年6月17日开始
One of the answer of the USACO training exercises.
usaco 合集,包括英文原题和中文译题,测试数据以及答案,很全啊!usaco 合集usaco 合集usaco 合集usaco 合集
数据结构机考用的USACO网站上的题目,对机考刷题很有帮助的!要多锻炼编程能力!
usaco历年测试数据
USACO题集及答案
usaco 2010-2011 nov news,喜欢usaco的朋友可以看看