Uva 242 邮票和信封
题目链接:https://vjudge.net/contest/146179#problem/D
题意:
信封上最多贴S张邮票。有N个邮票集合,每个集合有不同的面值。问哪个集合的最大连续邮资最大,输出最大连续邮资和集合元素。最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最大连续邮资就是n。如果不止一个集合结果相同,输出集合元素少的,如果仍相同,输出最大面值小的。
这个题意,刘汝佳的书上输出刚好写反。
分析:
先看一组数据。求最大连续邮资,那我想用二分啊,看这个答案是不是符合的,其实,在求这个答案是不是符合的,会重复计算,还不如按顺序计算。
这个从1开始算,算到某一个数,他的最少票数>s,就达到要求的了。那么这就是一个无穷背包问题了。
#include <bits/stdc++.h> using namespace std; const int maxn = ;
int a[maxn][maxn];
int s,n;
int dp[];
int ans[]; const int INF = 0x3f3f3f3f; int main()
{
while(scanf("%d",&s),s)
{
scanf("%d",&n);
for(int i=; i<n; i++)
{
scanf("%d",&a[i][]);
for(int j=; j<=a[i][]; j++)
scanf("%d",&a[i][j]); memset(dp,INF,sizeof(dp));
dp[] = ;
for(int j=; j<; j++)
{
for(int k=; k<=a[i][]&&j-a[i][k]>=; k++)
{
dp[j] = min(dp[j],dp[j-a[i][k]]+);
}
if(dp[j]>s)
{
ans[i] = j-;
break;
}
}
} int anss = -,cnt = ;
for(int i=; i<n; i++)
{
if(ans[i]>anss)
{
anss = ans[i];
cnt = i;
}
else if(ans[i]==anss&&a[i][]<a[cnt][]) cnt = i; //票数最少
else if(ans[i]==anss&&a[i][]==a[cnt][])
{
bool ok = false;
for(int j=a[i][]; j>=; j--)
{
if(a[i][j]<a[cnt][j])
{
ok = true;
break;
}
else if(a[i][j]>a[cnt][j]) break;
}
if(ok) cnt = i;
}
}
printf("max coverage =%4d :",anss);
for(int i=; i<=a[cnt][]; i++)
printf("%3d",a[cnt][i]);
puts("");
}
return ;
}
Uva 242 邮票和信封的更多相关文章
- UVa 242 邮票和信封(完全背包)
https://vjudge.net/problem/UVA-242 题意: 输入s(每个信封能粘贴的最多邮票数量)和若干邮票组合,选出最大连续邮资最大的一个组合(最大连续邮资也就是用s张以内的邮票来 ...
- LRJ入门经典-0905邮票和信封305
原题 LRJ入门经典-0905邮票和信封305 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 假定一张信封最多贴5张邮票,如 ...
- uva 242
242 - Stamps and Envelope Size Time limit: 3.000 seconds Stamps and Envelope Size Philatelists hav ...
- UVa 242 Stamps and Envelope Size (无限背包,DP)
题意:信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最 大,输出最大连续邮资和集合元素. 最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最 ...
- UVA - 242 线性DP
题意:给定多种邮票的组合,邮票最多只能用S张,这些邮票能组成许多不同面额,问最大连续面额的长度是多少,如果有多个组合输出组合中邮票数量最少的,如果仍有长度一致的,输出邮票从大到小排序后字典序最大的那个 ...
- 习题9-5 UVA 242
Stamps and Enovelope Size 题意: 给你最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最大,输出最大连续邮资和集合元素. 如果不止一个集合结果相 ...
- UVA - 242 Stamps and Envelope Size (完全背包+bitset)
题意:给你一些邮票面值的集合,让你选择其中一个集合,使得“能用不超过n枚集合中的邮票凑成的面值集合S中从1开始的最大连续面值”(即mex(S)-1)最大.如果有多解,输出集合大小最小的一个:如果仍有多 ...
- Stamps ans Envelope Sive UVA - 242
( ||{集合x}表示x中元素1||x中元素2||...||x的最后一个元素||(a,b)表示a||b) ans[i][j][k]表示考虑前i种邮票时取j个邮票能否得到面值kans[i][j][k]= ...
- 【Uva 242】Stamps and Envelope Size
[Link]: [Description] 给你n个集合; 每个集合都包含一些不同面额的邮票; (每种邮票都当做有无限张) 然后给你一封信上最多能贴的邮票张数S; 问你,哪一个集合的邮票; 能够贴出来 ...
随机推荐
- 数据库访问CRUD;__SELF__和__ACTION__的区别;自动收集表单:$n->create();
一.tp框架数据访问(pdo基础) public function test() { $n = D("Nation"); //select();find(); //查询 1.$at ...
- vert.x学习(四),使用模板解析器ClassLoaderTemplateResolver
在vert.x中使用模板解析,可以为我们带来很多方便.我这里学习了一下ClassLoaderTemplateResolver的简单使用.这次工程配置与上篇一样,不需要做任何多的配置.直接编写代码就可以 ...
- Windows一些零碎
一.端口被占用: 1.netstat -ano |findstr 80 //查看3306端口是否存在 2.tasklist |findstr 3036(PID号)//查看pid为3036的是什么程序在 ...
- 关于移动app开发的一些不错的站点
1. http://www.androiddevtools.cn Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的A ...
- C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度
一开始看到Int16, Int32, Int64这三种类型就觉得有点怪, 为什么要整个数字结尾的, 挺怪的. 昨天互相想到, ms这么干就是想让大家一眼就知道这个数据类型占多大空间吧. Int8, 等 ...
- ASP.NET Core – 2300% More Requests Served Per Second
http://www.ageofascent.com/asp-net-core-exeeds-1-15-million-requests-12-6-gbps/ ASP.NET Core – Excee ...
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录
RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架 ...
- pypi上传库
把程序打包上传到PyPi版本库中 转自 1 首先必须要按照以下文件结构 ├── douban │ ├── cli.py │ ├── douban.py │ ├── douban_token ...
- 游戏机制(Machinations)在线演示工具
>>> http://www.jorisdormans.nl/machinations/
- filter过滤器怎么写
package com.wh.filter; import java.io.IOException;import javax.servlet.Filter;import javax.servlet.F ...