暑假选拔赛02 ---- money
来源:互联网 发布:qq空间红人软件 编辑:程序博客网 时间:2024/05/17 10:29
Problem Description
在ytaaa的国度中,货币存在n种不相等的面额。在这种情况下,一些交易金额无法凑整,交易常常遇到问题。
Ytaaa国为了解决这个问题,出台了一部法令。即交易金额a如果无法用货币凑成,那么交易金额改变为b。b必须满足几个条件。
1. b<=a
2. b可用货币凑出。
3. b是所有满足1,2条件中最接近a的
现在ytaaa进行了几笔交易,请你计算ytaaa的实际交易额。
Input
对于每一笔交易,输入第一行为一个整数,表示原交易额s(1<=s<=100000)。
第二行为一个整数n,代表该国货币种类数(1<=n<=10)。
第三行为n个整数,代表该国货币面值ai(1<=ai<=100000)。
Output
每组数据输出一个数,实际交易额。
Sample Input
633
3
30 100 5
Sample Output
630
解题思路
完全背包问题;
只要令weight和value同值即可!
参考代码
#include <iostream>#include <algorithm>#include <cstring>#define maxn 10#define maxw 100000int dp[maxw+1];int w[maxn+1];using namespace std;int main(){ int s,n; while (~scanf("%d",&s)){ scanf("%d",&n); memset(dp,0,sizeof(dp)); for (int i = 0;i < n;i++) scanf("%d",&w[i]); for (int i = 0;i < n;i++) for (int j = w[i];j <= s;j++) dp[j] = max(dp[j],dp[j-w[i]]+w[i]); printf("%d\n",dp[s]); } return 0;}
0 0
- 暑假选拔赛02 ---- money
- 暑假选拔赛02 ---- Ysequence
- 暑假选拔赛02 ---- 可行方案
- 暑假选拔赛02 ---- 最大乘积
- 暑假选拔赛02 ---- an easy problem
- 暑假选拔赛01 ---- Chufa
- 暑假选拔赛01 ---- Prime
- 暑假选拔赛01 ---- code
- 暑假选拔赛01 ---- 数字问题
- 暑假培训选拔赛的一道题
- 2010-zzuli暑假集训选拔赛四场总结
- 2013年暑假队内选拔赛题解1
- 2013年暑假队内选拔赛题解2
- 2013年暑假队内选拔赛题解3
- 2013年暑假队内选拔赛题解4
- Money
- Money
- money
- JAVA线程池的分析和使用
- hdu 5282 Senior's String
- 南阳理工914Yougth的最大化
- Array 互转 Vector
- ThinkPhp框架基础知识
- 暑假选拔赛02 ---- money
- fork进程创建
- POJ-3660(Cow Contest)——传递闭包
- 【数据可视化】地理信息可视化应用
- 支持矢量机(一)
- solr中Zookeeper指令
- Linux 内核中 likely 与 unlikely 的宏定义解析
- 在线java编辑器
- NSString的部分常用API