【poj 1276】Cash Machine 题意&题解&代码(C++)
2016-03-30 08:23
387 查看
题目链接:
http://poj.org/problem?id=1276
题意:
给出一个目标值和一个货币种类数,然后再给出每种货币的信息(数量和面值),求出不超过目标值的最大能凑成的面值。
题解:
感觉特别神奇,这种数据范围居然可以直接一个多重背包解决,然而最坏复杂度 10×100000*1000 ,时限一秒就这么过了,神奇orz
代码:
http://poj.org/problem?id=1276
题意:
给出一个目标值和一个货币种类数,然后再给出每种货币的信息(数量和面值),求出不超过目标值的最大能凑成的面值。
题解:
感觉特别神奇,这种数据范围居然可以直接一个多重背包解决,然而最坏复杂度 10×100000*1000 ,时限一秒就这么过了,神奇orz
代码:
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> using namespace std; int ans,n,lim,sum[15],val[15],dp[100100]; int main() { while(scanf("%d%d",&lim,&n)!=EOF) { for (int i=1;i<=n;i++) scanf("%d%d",&sum[i],&val[i]); memset(dp,0,sizeof(dp)); dp[0]=1;ans=0; for (int i=1;i<=n;i++) for (int j=lim;j>=1;j--) if (dp[j]) { for (int k=1;k<=sum[i];k++) if (j+val[i]*k<=lim) dp[j+val[i]*k]=1,ans=max(ans,j+val[i]*k); else break; } printf("%d\n",ans); } }
相关文章推荐
- 【poj 1837】Balance 题意&题解&代码(C++)
- 《C++》15 C++ 命名空间
- 《C++》14 C++ 类数据抽象
- 《C++》13 C++ 多态
- 堆和栈的区别(转载)
- ISBN号码
- 实验:C++实验2-【项目1】标准体重
- C++:由输出推断继承关系
- c++引用深入分析
- 将数组a中的n个整数按相反顺序存放
- 如何产生一个不重复的随机数
- 【C/C++】计算两个整数的最大公约数和最小公倍数
- Effective C++: 模板类型推断.
- Effective C++: auto类型推断.
- C++浓缩(五)
- C++字符串
- gdal vc++ 配置说明
- 2015年蓝桥杯C组C/C++题目:格子中输出
- 20160228.CCPP体系详解(0038天)
- 2015年蓝桥杯C组第二题:立方尾不变