Stamps ans Envelope Sive UVA - 242
(
||{集合x}表示x中元素1||x中元素2||...||x的最后一个元素
||(a,b)表示a||b
)
ans[i][j][k]表示考虑前i种邮票时取j个邮票能否得到面值k
ans[i][j][k]= ||{ans[i-1][j-p][k-p*a[i]]}(0<=p<=j,p*a[i]<=k)
ans[i][j][k]= ||(ans[i-1][j][k],ans[i-1][j-1][k-a[i],...,ans[i-1][j-p][k-p*a[i]])
ans[i][j-1][k-a[i]]= ||(ans[i-1][j-1][k-a[i],...,ans[i-1][j-p][k-p*a[i]])
因此
ans[i][j][k]= ||(ans[i-1][j][k],ans[i][j-1][k-a[i]]) j、k从小到大
因此
ans[j][k]= ||(ans[j][k],ans[j-1][k-a[i]]) i、j、k从小到大
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int s,n;
struct Stamp
{
int data[],ans1,data1[];
int& operator[](int x)
{
return data[x];
}
int operator[](int x) const
{
return data[x];
}
void init()
{
memcpy(data1,data,sizeof(data1));
sort(data+,data+data[]+);
bool ans2[][];
bool ans[];
memset(ans,,sizeof(ans));
memset(ans2,,sizeof(ans2));
int i,j,k;
ans2[][]=true;
for(i=;i<=data[];i++)
for(j=;j<=s;j++)
for(k=data[i];k<=j*data[i];k++)
ans2[j][k]|=ans2[j-][k-data[i]];
for(i=;i<=s*data[data[]]+;i++)
for(j=;j<=s;j++)
ans[i]|=ans2[j][i];
for(i=;i<=s*data[data[]]+;i++)
if(ans[i]==false)
{
ans1=i-;
break;
}
}
friend bool operator<(const Stamp& a,const Stamp& b)
{
if(a.ans1>b.ans1)
return true;
else if(a.ans1<b.ans1)
return false;
if(a[]<b[])
return true;
else if(a[]>b[])
return false;
//int x[11],y[11];
//memcpy(x,a.data,sizeof(x));
//memcpy(y,b.data,sizeof(y));
//sort(x+1,x+x[0]+1);
//sort(y+1,y+y[0]+1);
int i;
for(i=a[];i>=;i++)
if(a[i]<b[i])
return true;
else if(a[i]>b[i])
return false;
return false;
}
void print()
{
printf("max coverage =%4d :",ans1);
for(int i=;i<=data[];i++)
printf("%3d",data1[i]);
puts("");
}
}st[];
int num_st;
int main()
{
int i,j;
scanf("%d",&s);
while(s!=)
{
num_st=;
scanf("%d",&n);
for(i=;i<=n;i++)
{
scanf("%d",&st[++num_st][]);
for(j=;j<=st[num_st][];j++)
scanf("%d",&st[num_st][j]);
st[num_st].init();
}
int temp=;
for(i=;i<=num_st;i++)
if(st[i]<st[temp])
temp=i;
st[temp].print();
scanf("%d",&s);
}
return ;
}
Stamps ans Envelope Sive UVA - 242的更多相关文章
- uva 242
242 - Stamps and Envelope Size Time limit: 3.000 seconds Stamps and Envelope Size Philatelists hav ...
- UVA - 242 Stamps and Envelope Size (完全背包+bitset)
题意:给你一些邮票面值的集合,让你选择其中一个集合,使得“能用不超过n枚集合中的邮票凑成的面值集合S中从1开始的最大连续面值”(即mex(S)-1)最大.如果有多解,输出集合大小最小的一个:如果仍有多 ...
- UVa 242 Stamps and Envelope Size (无限背包,DP)
题意:信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最 大,输出最大连续邮资和集合元素. 最大连续邮资是用S张以内邮票面值凑1,2,3...到n+1凑不出来了,最 ...
- 【Uva 242】Stamps and Envelope Size
[Link]: [Description] 给你n个集合; 每个集合都包含一些不同面额的邮票; (每种邮票都当做有无限张) 然后给你一封信上最多能贴的邮票张数S; 问你,哪一个集合的邮票; 能够贴出来 ...
- 习题9-5 UVA 242
Stamps and Enovelope Size 题意: 给你最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最大,输出最大连续邮资和集合元素. 如果不止一个集合结果相 ...
- Uva 242 邮票和信封
题目链接:https://vjudge.net/contest/146179#problem/D 题意: 信封上最多贴S张邮票.有N个邮票集合,每个集合有不同的面值.问哪个集合的最大连续邮资最大,输出 ...
- uva242,Stamps and Envelope Size
这题紫薯上翻译错了 应该是:如果有多个并列,输出邮票种类最少的那个,如果还有并列,输出最大面值最小的那个 坑了我一个下午 dp[p][q]==1表示可以用不超过q张组成面额p 结合记忆化,p从1开始枚 ...
- UVA - 242 线性DP
题意:给定多种邮票的组合,邮票最多只能用S张,这些邮票能组成许多不同面额,问最大连续面额的长度是多少,如果有多个组合输出组合中邮票数量最少的,如果仍有长度一致的,输出邮票从大到小排序后字典序最大的那个 ...
- UVa 242 邮票和信封(完全背包)
https://vjudge.net/problem/UVA-242 题意: 输入s(每个信封能粘贴的最多邮票数量)和若干邮票组合,选出最大连续邮资最大的一个组合(最大连续邮资也就是用s张以内的邮票来 ...
随机推荐
- simple-todo: 一个简易的 todo 程序 - django版
今天无意间看到 simple-todo: 一个简易的 todo 程序 - web.py 中文教程 ,然后发现竟然有好多的版本 http://simple-is-better.com/news/tag ...
- FZU 2150 Fire Game (暴力BFS)
[题目链接]click here~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...
- 剑指Offer面试题43(Java版):n个骰子的点数
题目:把n个骰子仍在地上.全部骰子朝上一面的点数之和为s,输入n,打印出s的全部可能的值出现的概率. 解法一:基于递归求骰子的点数,时间效率不够高 如今我们考虑怎样统计每个点数出现的次数. 要向求出n ...
- hdu1133 Buy the Ticket (卡兰特数应用+java大数)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1133 [题意] 电影票50块一张 有m个人手里正好有50块,n个人手里正好有100块,售票厅開始没有 ...
- 目标跟踪之高斯混合模型---cv实现
#include <stdio.h>#include <cv.h>#include <cxcore.h>#include <highgui.h>#inc ...
- Entity Framework工具POCO Code First Generator的使用(参考链接:https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator)
在使用Entity Framework过程中,有时需要借助工具生成Code First的代码,而Entity Framework Reverse POCO Code First Generator是一 ...
- Linux服务基础命令
---恢复内容开始--- 1简介: Linux的网络功能相当强悍,一时之间我们无法了解所有的文阿罗命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询,设置网卡和i ...
- [10.26_P2] 最短路 (单源最短路应用)
单源最短路问题拓展 Description 给你一张图,图上有 n 个点,m 条边,要你找到两个点,使其最短路恰好包含给定的 k 个点.输出这条最短路的长度,输入保证有解. 输入格式 第一行两个数 n ...
- 简单的处理git add ,git commit,git push 脚本
创建脚本lazygit.sh #!/bin/bash # 一次性处理git提交 #branch_name=`git symbolic-ref --short -q HEAD` branch_name= ...
- Activity快速入门理解
在Java领域,JBPM和Activity是两个主流的工作流系统,而Activity的出现无疑将会取代JBPM(Activity的开发者就是从Jbpm开发者出来的 1. 1个插件 在Eclipse ...