uva242,Stamps and Envelope Size
这题紫薯上翻译错了
应该是:如果有多个并列,输出邮票种类最少的那个,如果还有并列,输出最大面值最小的那个
坑了我一个下午
dp[p][q]==1表示可以用不超过q张组成面额p
结合记忆化,p从1开始枚举,一直枚举找到dp[p][q]=0的时候就可以了
这题应该归类成一种背包吧
注意dp初始化的时候应该初始化为-1(我就因为粗心,tle好久)
最后输出的时候比较恶心
最终的修改后的代码
实验证明,先读入所有数据后再处理比边读数据边处理要快
/*
* Author: Bingo
* Created Time: 2015/3/4 13:54:40
* File Name: uva242.cpp
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <time.h>
using namespace std;
const int maxint = ;
int S,T,n;
int map[][];
int dp[][];
//int ans[20][20];
int ans,ans_num,ans_max,ans_case;
int fun(int p,int q,int c){
if (dp[p][q]!=-) return dp[p][q];
else if (p==){
dp[p][q]=;
return ;
}else if (q==) {
dp[p][q]=;
return ;
}else {
for (int i=;i<=map[c][];i++) {
if (p>=map[c][i]&&fun(p-map[c][i],q-,c)){
dp[p][q]=;
return ;
}
}
}
dp[p][q]=;
return ;
}
int cmp(int a,int b){//比较最大连续邮资相同的集合
if(map[a][]<map[b][])return a;
if(map[b][]<map[a][])return b;
for(int i=map[a][];i>;i--){
if(map[a][i]<map[b][i])return a;
if(map[b][i]<map[a][i])return b;
}
return a;
}
int main(){
while (cin>>S&&S){
cin>>T;
int mycase=;
ans=;ans_num=maxint;ans_max=maxint;
while (T--){
cin>>n;
mycase++;
memset(dp,-,sizeof(dp));
map[mycase][]=n;
for (int i=;i<=n;i++) {
cin>>map[mycase][i];
}
int p;
for (p=;;p++) {
if (fun(p,S,mycase)==) break;
}
int t=p-;
if (t>ans){
ans=t;
ans_case=mycase;
}else if (t==ans){
ans_case=cmp(mycase,ans_case);
}
}
printf("max coverage =%4d :", ans);
for(int i=;i<=map[ans_case][];i++){
printf("%3d",map[ans_case][i]);
}
printf("\n");
}
return ;
}
uva242,Stamps and Envelope Size的更多相关文章
- UVA-242 Stamps and Envelope Size (DP)
题目大意:给一些邮票的面值组合,找出在限定的张数范围内能组合出连续最大值得那个组合. 题目分析:状态可以这样定义:dp(k,u)表示u能否用k张邮票组合成.状态转移方程很显然了. 代码如下: # in ...
- UVa 242 Stamps and Envelope Size (无限背包,DP)
题意:信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最 大,输出最大连续邮资和集合元素. 最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最 ...
- UVA - 242 Stamps and Envelope Size (完全背包+bitset)
题意:给你一些邮票面值的集合,让你选择其中一个集合,使得“能用不超过n枚集合中的邮票凑成的面值集合S中从1开始的最大连续面值”(即mex(S)-1)最大.如果有多解,输出集合大小最小的一个:如果仍有多 ...
- Stamps and Envelope Size
题意: 容量为s的信封,给n组邮票的面值,求哪一组能组成的连续的面值的最大值最大,若有多组答案,输出面值数量最小的一组,若数量相等,输出最大面值最小的一组,若最大面值相等,输出第二大面值最小的一组,依 ...
- 【Uva 242】Stamps and Envelope Size
[Link]: [Description] 给你n个集合; 每个集合都包含一些不同面额的邮票; (每种邮票都当做有无限张) 然后给你一封信上最多能贴的邮票张数S; 问你,哪一个集合的邮票; 能够贴出来 ...
- length()方法,length属性和size()的方法的区别
length()方法,length属性和size()的方法的区别: length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法: length属性是针对Java中的数 ...
- iPhone launch screen,self.view.frame.size
在工程文件中找到以下设置 "Launch Screen File"只支持iOS8以上版本,如果用之,则self.view.frame.size返回的结果为正常的当前view尺寸. ...
- [转]实例化SqlParameter时,如果是字符型,一定要指定size属性
转自:http://bbs.csdn.net/topics/380155255 以前在实例化SqlParameter时,通常都是用下面的语句,没有设置size属性: new SqlParameter( ...
- 为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢?
没有考虑到具体的问题上面,我们单纯的来讲: 为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢? list == null 说明list没有初始化( ...
随机推荐
- 201521123092, 《java程序设计》第1周学习总结。
#1.本周学习总结 这一周是我学习java的第一周,刚接触一门全新的编程语言,觉得还是有点困难的,很多基础性的java知识需要一点点学习,我会请教同学以及查询网上的学习资料,认真学好这一门学科. 本周 ...
- npm run build生成路径问题
vue项目中可以使用npm run build 命令生成静态文件夹dist,开发者可以直接点击dist文件夹下面的index.html问价来访问自己的项目,但是用vue-cli生成的项目,当运行npm ...
- Linux帮助手册(man)
Linux的帮助文档 在我们使用Linux的过程中,都会遇到这样那样的问题,一般我们在计算机能连上网的情况下会进行百度或Google解决问题,但是并不是所有文题都能在网上很快得到答案.万一我们是在没有 ...
- node.js的安装及配置
一.安装 直接在浏览器搜索node.js,在官网上下载(一般旧版的更加稳定,比如下载4.4.7版本) 点击DOWNLOADS 往下翻,点击Previous Release Windows下载msi(6 ...
- Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】
上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...
- SSH框架搭建最终版【测试、log4j、baseDao】
最详细搭建SSH框架环境 本博文主要是讲解如何搭建一个比较规范的SSH开发环境,以及对它测试[在前面的搭建中,只是整合了SSH框架,能够使用SSH实现功能],而这次是相对规范的. 导入开发包 在Str ...
- JSP页面格式化数字或时间 基于struts的
jsp日期格式化 转自: http://blog.csdn.net/chj225500/article/details/7251552 在直接<s:textfield中也要日期格式化,平时使用日 ...
- 升级Linux tar &&解决某用tar解压失败的tar包
今天解压个文件,出来很多这样的: /bin/tar: Ignoring unknown extended header keyword `SCHILY.dev'/bin/tar: Ignoring u ...
- 纯css隐藏移动端滚动条解决方案(ios上流畅滑动)
纯css隐藏移动端滚动条解决方案(ios上流畅滑动) html代码展示(直接复制代码保存至本地文件运行即可): <!DOCTYPE html> <html lang="en ...
- JS判斷文件大小
function findSize(file) { var dom = document.getElementById("file"); var fileSize = dom.fi ...