原题

LRJ入门经典-0905邮票和信封305
难度级别:B; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B
试题描述

假定一张信封最多贴5张邮票,如果只能贴1分和3分的邮票,可以组成面值1-13以及15,但不能组成面值14。我们说:对于邮票组合{1,3}以及数量上限S=5,最大连续邮资为13。

输入S和若干邮票组合,选出最大连续邮资最大的一个组合。如果有多种并列,保证选出的组合中邮票张数最多。如果还有并列,保证最大的邮票面值尽可能小

输入
输入第一行包含一个正整数S(S<=10),表示邮票数量上限
第二行为一个正整数N(N<=10)
以下N行,每行代表一个邮票集合,第一个数表示集合中邮票的数量,后面从小到大依次表示每张邮票的面值(邮票面值不超过100)
输出
输出包括两行,第一行为最大连续邮资,第二行依次输出该连续邮资对应的邮票组合(多解时按照题目描述的要求输出最恰当的组合)
输入示例
5
2
4 1 4 12 21
4 1 5 12 28
输出示例
71
1 4 12 21

分析

代码

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct P
{
int s,x[110];
}a[11];
int dp[11][11000];
inline int minn(int xx,int yy)
{
for(int i=1;i<yy;i++)
for(int j=i;j<yy;j++)
if(i+j==yy && (dp[xx][i]+dp[xx][j])<dp[xx][yy]) dp[xx][yy]=dp[xx][i]+dp[xx][j];
}
int main()
{
int n,m,sum=0;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i].s;
for(int j=1;j<=a[i].s;j++)
{
cin>>a[i].x[j];
sum+=a[i].x[j]*n;
}
}
memset(dp,9999,sizeof(dp));
for(int i=1;i<=m;i++)
{
if(a[i].x[1]!=1)
{
dp[i][0]=0;
continue;
}
for(int j=1;j<=a[i].s;j++) dp[i][a[i].x[j]]=1;
for(int j=1;j<=1000;j++)
{
if(dp[i][j]==1)
{
if(dp[i][j]>n)
{
dp[i][0]=j-1;
break;
}
continue;
}
dp[i][j]=min(dp[i][j],minn(i,j));
if(dp[i][j]>n)
{
dp[i][0]=j-1;
break;
}
}
}
int ii=-1,min_dp=-1,min_s=0,min_o=99999999;
for(int i=1;i<=m;i++)
{
if(dp[i][0]>min_dp) min_dp=dp[i][0],min_s=a[i].s,min_o=a[i].x[a[i].s],ii=i;
if(dp[i][0]==min_dp)
{
if(a[i].s>min_s) min_dp=dp[i][0],min_s=a[i].s,min_o=a[i].x[a[i].s],ii=i;
if(a[i].s==min_s)
if(a[i].x[a[i].s]<min_s) min_dp=dp[i][0],min_s=a[i].s,min_o=a[i].x[a[i].s],ii=i;
}
}
/*cout<<endl<<endl;
for(int i=1;i<=1000;i++) cout<<dp[1][i]<<" ";
cout<<endl<<endl;
for(int i=1;i<=1000;i++) cout<<dp[2][i]<<" ";
cout<<endl<<endl;*/
cout<<min_dp<<endl;
cout<<a[ii].x[1];
for(int i=2;i<=a[ii].s;i++) cout<<" "<<a[ii].x[i];
return 0;
}
/*
10
2
5 1 7 16 31 88
5 1 15 52 67 99
*/

  

LRJ入门经典-0905邮票和信封305的更多相关文章

  1. LRJ入门经典-0906最短公共父串305

    原题 LRJ入门经典-0906最短公共父串305 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 给定字符串A和字符串B,要求 ...

  2. LRJ入门经典-0903切蛋糕305

    原题 LRJ入门经典-0903切蛋糕305 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 如图所示有一个矩形蛋糕,上面划分成 ...

  3. LRJ入门经典-0907万圣节的小L306

    原题 LRJ入门经典-0907万圣节的小L306 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 今天是万圣节,小L同学开始了 ...

  4. C++语言学习——LRJ入门经典笔记

    1.scanf的输入格式,空格.TAB和回车符都是无关紧要,所以按Enter键并不意味着输入结束. 告诉程序输入结束的方式: 在windows下,输入完毕后先按Enter键,再按Ctrl+Z键,最后再 ...

  5. 强烈推荐visual c++ 2012入门经典适合初学者入门

    强烈推荐visual c++ 2012入门经典适合初学者入门 此书循序渐进,用其独特.易于理解的教程风格来介绍各个主题,无论是编程新手,还是经验丰富的编程人员,都很容易理解. 此书的目录基本覆盖了Wi ...

  6. <Node入门经典>读书笔记

    最近在读<Node入门经典>, 之前没有做笔记, 今天开始把看过自己又写了的代码放这里以免忘记. express var express = require('express') var ...

  7. 正经学C#_介绍与其编写基础:《c#入门经典》

    本文所讲内容,均可在<c#入门经典>中可以查询.如有错误,敬请指出.谢谢! C#:全称C Shar.是微软.Net Framework平台下最为主要的客户语言之一.个人理解,c#是微软最为 ...

  8. SQL入门经典(十) 之事务

    事务是什么?事务关键在与其原子性.原子性概念是指可以把一些事情当作一个执行单元来看待.从数据库角度看待.他是指应该全部执行或者全部不执行一条或多条语句的最小组合.当处理数据时候经常确保一件事发生另一件 ...

  9. 《Web编程入门经典》

    在我还不知道网页的基础结构的时候,我找过很多本介绍Web基础的书籍,其中这本<Web编程入门经典>,我认为是最好的. 这本书内容很全面.逻辑很严谨.结构很清晰.语言文字浅显易懂. 看这本书 ...

随机推荐

  1. hdoj--1005--Number Sequence(规律题)

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. 8.解决IntelliJ Idea 集成TortoiseSVN 时找不到svn.exe

    转自:https://blog.csdn.net/beibeijia125/article/details/70183533?utm_source=blogxgwz9 首先我们可以在http://su ...

  3. BZOJ 3143 高斯消元+贪心....

    思路: 先算一下每条边经过次数的期望 转化为每个点经过次数的期望 边的期望=端点的期望/度数 统计一下度数 然后高斯消元 贪心附边权--. //By SiriusRen #include <cm ...

  4. java9新特性-2-安装与官网说明

    1.jdk 9的下载 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html         下载安 ...

  5. ListView有Header时的position情况

     问题: headerView 为第0个view,item 的 pos会从1开始. 解决方式: position减去 listView.getHeaderViewsCount().例如我想得到list ...

  6. 【转载】eclipse中批量修改Java类文件中引入的package包路径

    原博客地址:http://my.oschina.net/leeoo/blog/37852 当复制其他工程中的包到新工程的目录中时,由于包路径不同,出现红叉,下面的类要一个一个修改包路径,类文件太多的话 ...

  7. PostgreSQL Replication之第七章 理解Linux高可用(2)

    7.2 衡量可用性 可用性是提供商试图保证一定的可用性级别和客户可以期望的可用性或更多.在某些情况下(取决于服务合同) 收取罚款或减少申购费用是意外停机的原因. 可用性的质量使用百分数来衡量:例如,9 ...

  8. 归档备份被删,GoldenGate无法抽取数据

    发生错误如下,源端EXTRACT进程异常中止,查看日志,发现如下错误. 2014-07-23 01:32:13  ERROR   OGG-00446  Oracle GoldenGate Captur ...

  9. UI Framework-1: Aura Views

    Views Views is a user interface framework built on a type called, confusingly, View. Responsible for ...

  10. div和css:行内元素和块元素的水平和垂直居中

    行内元素: 水平居中:text-align:center ul水平居中:加 display:table; margin:0 auto; 此元素会作为块级表格来显示(类似 <table>), ...