F. koifish的火柴棒 - 第14届ACM程序设计大赛-网络赛 - 比赛 - CQUPT Online Judge

题目概述:

koifish有N个火柴棒。

他现在要用这N个火柴棒恰好拼成一个有M种数字的数。

用于形成数字1,2,3,4,5,6,7,8,9的火柴棍数量应分别为2,5,5,4,5,6,3,7,6。

例如,7根火柴棒可以拼出711。

现在koifish想知道,他能拼出的数最大是多少。

输入格式

第一行两个整数,分别N是和M

第二行M个数,表示koifish要拼出的数用到的数字分别是哪些。

输出格式

一行,表示koifish能拼出的最大数。

输入样例1

20 4
3 7 8 4

输出样例1

777773

输入样例2

101 9
9 8 7 6 5 4 3 2 1

输出样例2

71111111111111111111111111111111111111111111111111

输入样例3 

15 3
5 4 6

输出样例3

654

想法思路:

    这个题类似于完全背包问题,拼出每个数字需要用到的火柴数类似于每件物品装进来需要消耗的空间,这里我们使用一个a数组来储存,每个数字能组成的数的大小则类似于每件物品的价值,我们在这个题中要求到的就是能拼出来的最大的数

#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;typedef pair<int, int> PII;const int N=10010;int n,m,a[10]= {0,2,5,5,4,5,6,3,7,6};
string dp[N];  //dp[i]为用i个火柴棍能拼出的最大的数字
PII num[20];  //num.x为拼出后的数字,num.y为拼出需要消耗的数量//自定义一个cmp函数装进sort中
bool cmp(PII &l,PII &r)
{//如果两个字符串l和r的长度相同if(l.x == r.x)return l.y < r.y;  //则按消耗的数量小排序return l.x > r.x;   //按数字较大的排序
}string tmax(string& l,string &r)
{if(l.size()== r.size()){if(l>r)return l;return r;}if(l.size()>r.size())return l;return r;
}
int main()
{cin>>n>>m;for(int i=1; i<=m; i++){cin >> num[i].x;    //输入进每个能拼的数字num[i].y = a[num[i].x];   //num.y则为每个数字的消耗数}sort(num+1, num+1+m,cmp);   //按cmp函数进行排序for(int i=1; i<=n+5; i++)dp[i]="#";   //初始化dp数组dp[0]="";   //0个火柴棍为空for(int i=1; i<=m; i++)for(int j=num[i].y; j <= n; j++){    //这里的操作类比于一维完全背包问题if(dp[j-num[i].y] !="#" || j==num[i].y)   //因为我们每一次更新操作需要从前一个得出 因此需要要求前一个dp数组不为空 或者第一次进入判断{//ns为上一次加这一次(类比完全背包)string ns=dp[j-num[i].y] + to_string(num[i].x);dp[j] = tmax(dp[j],ns);  //更新max}}cout<<dp[n]<<endl;return 0;
}

重邮acm校赛 F.火柴棍相关推荐

  1. 2014湖南农业大学ACM校赛

    湖南农业大学 2014年 ACM 校赛Problem 2014 /2/23  星期日  12:30-17:30 A.搜素      1794.查找指定的字符串      B.链表      1795 ...

  2. 大连海事大学ACM校赛题解

    大连海事大学ACM校赛题解 感谢xzx对题目的排版~ 作为出题人之一,我先简单说一下我认为的题目难度. 我觉着第一档比较容易的签到题是L.J.M,L就是向下取整的签到:J是简单思维.构造题,到了6以后 ...

  3. 广东工业大学acm校赛总结(基础差的人的自我觉悟)

    2022.03.27 广东工业大学acm校赛总结: 实话说,这次校赛表现非常不好,B题的钩子就差一点点,分块了,也知道%k也知道分奇数偶数,就是最后差一个特判不知道怎么解决,寥寥草草一个三等奖,练了这 ...

  4. 第一次ACM校赛_记录

    [2021-10-24]第一次ACM校赛 一.报名 1.去年比赛 2.流程 二.准备 1.核心代码模式和ACM代码模式 1.1核心代码模式 1.2 ACM代码模式 2.往年题目 3.机房环境 3.1语 ...

  5. 一个彻彻底底的水军的ACM校赛感悟~~~

    2017年4月23日刚刚结束了ACM校赛.作为一名不是ACM队的水军来说,抱着必突突突的决心,参加了这次的比赛.经过五个小时的激烈角逐,我们队伍还参加了一场和我们没有什么关系的颁奖典礼. 我是一个编程 ...

  6. 记第七届ACM校赛-回忆

    这一次校赛其实是两个月半之前的事情了---4月29日.那天比赛完之后,自己就想当天写写这一次比赛的事,但是由于那天比赛完之后又马上又赶回家,5个小时的比赛加上2个小时的车程,整个人都觉得很累,所以那天 ...

  7. 山东科技大学第二届ACM校赛解题报告

    这次校赛的目的,是为了省赛测试各种程序是否有问题. 热身赛的逗比题有点打击我,感觉正式赛应该不会出这种问题.开始的时候直接上了A题,然后大概是第六,前面好多友情队,正式队排名第二. 然后读了读B题,稍 ...

  8. 2014哈商大ICPC/ACM校赛解题报告

    被debug邀请去參加校赛,哎,被虐..我对不起工大.. 由于本人不搞ACM,算法处于HelloWorld水准.. 虽然题目除了鸟不拉屎星人之外都非常水,但我能做到这个程度,全然是超水平发挥了.. 数 ...

  9. 2018年东北农业大学春季校赛 F wyh的集合【思维】

    链接:https://www.nowcoder.com/acm/contest/93/F 来源:牛客网 题目描述 你们wyh学长给你n个点,让你分成2个集合,然后让你将这n个点进行两两连接在一起,连接 ...

最新文章

  1. 北京建委breaa.cn宕了
  2. Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台
  3. 一个学习的好去处!!
  4. 技术如何转型产品经理
  5. (63)Verilog HDL模块例化VHDL模块
  6. 服务器资源评估文档,服务器存储资源评估
  7. android实现弹出输入法时,顶部固定,中间部分上移的效果,使用 Dialog 制作紧贴输入法顶部的输入框...
  8. 南山科技园的IDC机房怎么样?
  9. 【无机纳米材料科研制图——OriginLab 0206】Origin绘制X射线衍射XRD堆叠图
  10. 生物化学复习题I·蛋白质
  11. 第五节 B-S看涨看跌期权定价
  12. android 打砖块教程,scratch教程-打砖块游戏
  13. HBase in Practice - 性能、监控及问题解决
  14. 微端是什么意思?微端对服务器性能配置要求
  15. 微信小程序开发—引用公共js里的方法
  16. 7-2 列出连通集 (25 分)
  17. 四句话送给项目人:谦逊不狂、博而有专、聪而不明、束己驭人
  18. 浅谈数据结构-关键路径
  19. msvcp120 mysql_MySql压缩版安装及避免1055错误和msvcp120.dll丢失
  20. 深入研究核辐射!核辐射的原理(转)

热门文章

  1. 基于mybatis-plus的代码自动生成-完美版
  2. IDES ABAP/4破解及client copy [转]
  3. SQL查询有两门以上不及格的学生及查询出全部及格的学生
  4. 动态路由协议之RIP(路由信息协议)思维导图
  5. 中国足球队输球的原因大总结
  6. eclispe简体与繁体字切换
  7. c# 获取端口设备全名
  8. 3.5英寸硬盘Caviar完全分解(硬盘构造再揭秘之三)
  9. 苹果笔记本包_笔记本变脏了?是你这三招没做对吧!
  10. 神武3 服务器维护公告,《神武3》2019年3月15日新闻维护公告