poj 1742
2015-09-10 16:55
369 查看
这是一道多重背包的题目。
我们可以用多重背包的可行性来对题目进行求解。
我们可以用多重背包的可行性来对题目进行求解。
#include<stdio.h> #include<iostream> #include<string> #include<string.h> #include<algorithm> #include<iomanip> #include<vector> #include<time.h> #include<queue> #include<stack> #include<iterator> #include<math.h> #include<stdlib.h> #include<limits.h> #include<map> #include<set> #include<bitset> //#define ONLINE_JUDGE #define eps 1e-8 #define INF 0x7fffffff #define FOR(i,a) for((i)=0;i<(a);(i)++) #define MEM(a) (memset((a),0,sizeof(a))) #define sfs(a) scanf("%s",a) #define sf(a) scanf("%d",&a) #define sfI(a) scanf("%I64d",&a) #define pf(a) printf("%d\n",a) #define pfI(a) printf("%I64d\n",a) #define pfs(a) printf("%s\n",a) #define sfd(a,b) scanf("%d%d",&a,&b) #define sft(a,b,num) scanf("%d%d%d",&a,&b,&num) #define for1(i,a,b) for(int i=(a);i<b;i++) #define for2(i,a,b) for(int i=(a);i<=b;i++) #define for3(i,a,b)for(int i=(b);i>=a;i--) #define MEM1(a) memset(a,0,sizeof(a)) #define MEM2(a) memset(a,-1,sizeof(a)) #define ll __int64 const double PI=acos(-1.0); template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;} template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;} template<class T> inline T Min(T a,T b){return a<b?a:b;} template<class T> inline T Max(T a,T b){return a>b?a:b;} using namespace std; //#pragma comment(linker,"/STACK:1024000000,1024000000") int n,m; #define M 110 #define N 1000010 #define Mod 1000000000 #define p(x,y) make_pair(x,y) const int MAX_len=550; struct Node{ int val,num; }a[110]; int f[100010],used[100010]; int main(){ #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); #endif while(sfd(n,m)!=EOF && n+m){ for(int i=0;i<n;i++) sf(a[i].val); for(int i=0;i<n;i++) sf(a[i].num); memset(f,0,sizeof f); //f[i]表示i这个面值是否能达到 int ans=0; f[0]=1; //0能达到 for(int i=0;i<n;i++){ memset(used,0,sizeof used); //used[j]在i次循环时代表组成j这个面值时,i种货币使用了多少 for(int j=a[i].val;j<=m;j++){ if(!f[j] && f[j-a[i].val] && used[j-a[i].val]+1<=a[i].num){ //j面值未达到 && j-a[i].val面值达到 && j-a[i].val使用的i种货币的数量<i种货币的数量 f[j] = 1; used[j] = used[j-a[i].val]+1; ans++; } } } pf(ans); } return 0; }
相关文章推荐
- 转载:天涯——散文天下——《甄环传与宫心计》——作者:南方孤驴
- ESB 客户端调用 处理类
- poj_1988 并查集
- 邓小平农村建设思想
- 基于原生JS移动端响应式解决方案——AUTOSTRAP
- 指针函数和函数指针
- cocos2dx eclopse不编译C++部分代码
- Sql 优化
- confluence-5.4.4 破解安装
- Centos 防火墙管理
- 前端代码说明v1.1.0
- Runtime of Objective-C
- Netfilter 简易分析
- vim编辑器的进阶使用
- 构造HTTP请求Header实现“伪造来源IP”
- 转载:天涯——散文天下——《同业合租厂房的趣事》——作者:南方孤驴
- Syscall系统调用分析
- 【jQuery】点击缩略图查看大图-imgbox
- 试论政企分开与国企分开
- 开发环境的搭建