poj1742
Time Limit: 3000MS | Memory Limit: 30000K | |
Total Submissions: 33998 | Accepted: 11554 |
Description
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
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
line.
Sample Input
3 10
1 2 4 2 1 1
2 5
1 4 2 1
0 0
Sample Output
8
4
Source
有n种不同面值的硬币,面值各为A1,A2,A3。。AN,数量各为C1,C2,C3,,,,,CN。给定数m,问这些硬币能组成小于等于m的数中的哪些数,输出这些数的数目。
其实这个vn算法的编码很简单,关键是如何证明这种贪心是正确的,这个比较复杂,,我还在理解中!!!!!!!!
---用单调队列优化的DP已超出了NOIP的范围,
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,ans,w[],v[],d[],s[];
int main()
{
while(scanf("%d%d",&n,&m)==&&n&&m){
int i,j;ans=;
for(i=;i<n;i++) scanf("%d",w+i);
for(i=;i<n;i++) scanf("%d",v+i);
memset(d,,sizeof(d));
for(d[i=]=;i<n;i++){
for(j=;j<=m;j++) s[j]=;
for(j=w[i];j<=m;j++)
if(!d[j]&&d[j-w[i]]&&s[j-w[i]]<v[i])
d[j]=,s[j]=s[j-w[i]]+;
}
for(i=;i<=m;i++)
if(d[i])
ans++;
printf("%d\n",ans);
}
return ;
}
#include<cstdio>
int n,m,res;
int use[],c[],f[];
int main()
{
f[]=;
while(scanf("%d%d",&n,&m)==&&n&&m){
res=;
for(int i=;i<=m;i++) f[i]=;
for(int i=;i<n;i++) scanf("%d",&c[i]);
for(int i=,s;i<n;i++){
for(int j=;j<=m;j++) use[j]=;
scanf("%d",&s);
for(int j=c[i];j<=m;j++){
if(!f[j]&&f[j-c[i]]&&use[j-c[i]]<s){//贪心过程
use[j]=use[j-c[i]]+;
f[j]=;
res++;
}
}
}
printf("%d\n",res);
}
return ;
}
对比上下两张AC图
太想节省空间,空间没节省了,时间还更长了。
读入完成再处理比边读边处理快!!!
poj1742的更多相关文章
- 【poj1742】 Coins
http://poj.org/problem?id=1742 (题目链接) 题意 给出n钟纸币,每种纸币面值为a[i],数量为c[i],问能够成多少数值小于等于m的数. Solution 先想到了容斥 ...
- POJ1742 Coins(男人八题之一)
前言 大名鼎鼎的男人八题,终于见识了... 题面 http://poj.org/problem?id=1742 分析 § 1 多重背包 这很显然是一个完全背包问题,考虑转移方程: DP[i][j]表示 ...
- 《挑战程序设计竞赛》2.3 动态规划-优化递推 POJ1742 3046 3181
POJ1742 http://poj.org/problem?id=1742 题意 有n种面额的硬币,面额个数分别为Ai.Ci,求最多能搭配出几种不超过m的金额? 思路 据说这是传说中的男人8题呢,对 ...
- POJ1742 coins 动态规划之多重部分和问题
原题链接:http://poj.org/problem?id=1742 题目大意:tony现在有n种硬币,第i种硬币的面值为A[i],数量为C[i].现在tony要使用这些硬币去买一块价格不超过m的表 ...
- POJ1742 Coins[多重背包可行性]
Coins Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 34814 Accepted: 11828 Descripti ...
- [poj1742]coin
题意:多重背包的w=v特殊情况 分析:此题如果用单调队列O(nv)会被无耻卡常数…… 然后鉴于此题W=V,所以只存在背包恰好为i的是否存在,即bool型的f[i]是否为1 即往背包染色上面考虑 如果是 ...
- poj1742 Coins(多重背包+单调队列优化)
/* 这题卡常数.... 二进制优化或者单调队列会被卡 必须+上个特判才能过QAQ 单调队列维护之前的钱数有几个能拼出来的 循环的时候以钱数为步长 如果队列超过c[i]就说明队头的不能再用了 拿出来 ...
- POJ1742:Coins(多重背包)
Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar. ...
- poj1742 多重背包的可行性问题
http://poj.org/problem? id=1742 Description People in Silverland use coins.They have coins of value ...
随机推荐
- 用table表格来调整控件的格式
由于想自己写一个web,所以也在学习html语言的一些东西,让我回忆起了大学时代曾对网页设计产生过兴趣,无奈那时候还没有自己的电脑,还常去网吧买个软盘下载一些图片,然后用fontpage做一些网页.后 ...
- UIScreenAdaptive
using UnityEngine; namespace Com.Xyz.UI { [ExecuteInEditMode] [RequireComponent(typeof(UIRoot))] pub ...
- 实用且免费API接口2
之前已经整理过一些免费API,现在在知乎专栏上看到别人整理的一些实用免费API,有一些是没有重复的,因此也搬过来. 今天的内容,很适合你去做一些好玩.实用的东西出来. 先来科普个概念,开放应用程序的A ...
- 原生 javascript 基础回顾
(1)打开新窗口 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL:可选参数,在窗口中要显示网页的网址或路径.如果省略这个参数,或者它的值是空 字符串 ...
- 6、udev机制
udev 机制,主要实现的是当设备连接系统的时候,在 /dev 目录下,自动创建设备节点. 1.1.工作方式 当设备连接或者移除的时候,内核会发出热拔插事件(hotplug eve ...
- ASP.NET_SessionId 不相同导致验证码出错
问题: 今天碰到一个比较奇怪的问题,每个页面请求的cookie的ASP.NET_SessionId 不相同,导致验证码检验出错.也就是说每个请求都是一个新的会话,我们把验证码保证在Session[ra ...
- [UIDevice currentDevice].model
iPhone Simulator iPad Simulator iPod touch iPad iPhone
- yum安装epel后报错
Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfi ...
- Centos7 卸载rpm包、卸载yum安装的包
1. 通过rpm -q <关键字>查到rpm包的名字.2. 调用rpm -e <包名>删除特定的rpm包
- Atitit.cateService分类管理新特性与设计文档说明v1
Atitit.cateService分类管理新特性与设计文档说明v1 1. V2 新特性规划1 2. 分类管理1 3. 分类增加与修改维护2 4. Js控件分类数据绑定2 1. V2 新特性规划 增加 ...