HDUOJ-------2844Coins
Coins
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5936 Accepted Submission(s): 2458
Problem Description
Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. One day Hibix opened purse and found there were some coins. He decided to buy a very nice watch in a nearby shop. He wanted to pay the exact price(without change) and he known the price would not more than m.But he didn't know the exact price of the watch. You are to write a program which reads n,m,A1,A2,A3...An and C1,C2,C3...Cn corresponding to the number of Tony's coins of value A1,A2,A3...An then calculate how many prices(form 1 to m) Tony can pay use these coins.
Input
The input contains several test cases. The first line of each test case contains two integers n(1 ≤ n ≤ 100),m(m ≤ 100000).The second line contains 2n integers, denoting A1,A2,A3...An,C1,C2,C3...Cn (1 ≤ Ai ≤ 100000,1 ≤ Ci ≤ 1000). The last test case is followed by two zeros.
Output
For each test case output the answer on a single line.
Sample Input
3 10 1 2 4 2 1 1 2 5 1 4 2 1 0 0
Sample Output
8 4
Source
2009 Multi-University Training Contest 3 - Host by WHU
代码: 简单的多重背包,但是恶心的地方是m居然可以为负数....是不是很伤不起呀...哈哈
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 const int maxn=105;
5 struct price
6 {
7 int val;
8 int num;
9 };
10 price sta[maxn];
11 int dp[100010];
12 int main()
13 {
14 int n,m,i,j,ans;
15 while(scanf("%d%d",&n,&m),n+m)
16 {
17
18 for(i=0;i<n;i++)
19 scanf("%d",&sta[i].val);
20 for(ans=i=0;i<n ;i++)
21 {
22 scanf("%d",&sta[i].num);
23 ans+=sta[i].val*sta[i].num ;
24 }
25 int tem=ans<m?ans:m;
26 if(tem<0)
27 {
28 printf("0n");
29 continue;
30 }
31 memset(dp,-1,sizeof(dp[0])*(tem+1));
32 dp[0]=0;
33 for(i=0;i<n;i++)
34 {
35 if(sta[i].num*sta[i].val>=tem) //完全背包
36 {
37 for(j=sta[i].val ;j<=tem;j++)
38 {
39 if(dp[j-sta[i].val]>-1&&dp[j]<dp[j-sta[i].val]+sta[i].num)
40 dp[j]=dp[j-sta[i].val]+sta[i].num;
41 }
42 }
43 else
44 {
45 int k=1;
46 while(sta[i].num>=k)
47 {
48 for(j=tem ;j>=k*sta[i].val ; j--)
49 {
50 if(dp[j-k*sta[i].val]>-1&&dp[j]<dp[j-k*sta[i].val]+k)
51 dp[j]=dp[j-k*sta[i].val]+k;
52 }
53 sta[i].num-=k;
54 k<<=1;
55 }
56
57 for(j=tem ;j>=sta[i].num ;j--)
58 {
59 if(j<sta[i].num*sta[i].val) break;
60 if(dp[j-sta[i].num*sta[i].val]>-1&&dp[j]<dp[j-sta[i].num*sta[i].val]+sta[i].num)
61 dp[j]=dp[j-sta[i].num*sta[i].val]+sta[i].num;
62 }
63
64 }
65 }
66 ans=0;
67 for(i=1;i<=tem;i++)
68 {
69 if(dp[i]!=-1)ans++;
70 }
71 printf("%dn",ans);
72 }
73 return 0;
74 }
- Websocket HandShake Sec-WebSocket-Accept 生成策略
- 关于JVM CPU资源占用过高的问题排查
- ActiveMQ简单介绍以及安装
- Java Process destroy方法kill进程,返回码测试
- 百度人脸识别API Java调用
- Java Socket Timeout总结
- 求一个数组中子数组的最大和算法(Java实现)
- JDBC批量提交SQL的几点问题解答
- 工具推荐: 汽车CAN总线分析框架CANToolz
- Windows下jps, jconsole无法查看本地java进程问题解决
- DateFormat 线程不安全
- zip文件操作导致JVM crash
- 如何搭建你自己的“深度学习”机器?
- MySQL INSERT INTO...ON DUPLICATE KEY UPDATE的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于Apache shiro实现一个账户同一时刻只有一个人登录(shiro 单点登录)
- 视频上云安防视频云服务平台EasyCVR通过海康sdk协议接入多路设备拉流时出现部分设备拉流不稳定是什么原因?
- Centos6.x服务器配置jdk+tomcat+mysql环境(jsp+mysql)
- Linux的压缩和解压缩的方法总结
- RTSP/GB28181/HIKSDK/Ehome协议视频融合平台EasyCVR编译C++报参见“XXX”的声明错误
- 详解 Linux 常用目录的作用
- CentOS6环境下搭建路由器的方法
- centos7下NFS使用与配置的步骤
- 基于DOM4J的XML文件解析类
- Win7安装和配置Apache2.4服务器的详细方法
- shiro会话管理示例代码
- Windows Apache2.4 VC9(ApacheHaus)详细安装配置教程
- 在centos 7中安装配置k8s集群的步骤详解
- Centos7.2 编译安装方式搭建 phpMyAdmin
- CentOS 6.5 web服务器apache的安装与基本设置