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. 【并发编程】CountDownLatch与CyclicBarrier
  2. 解决beautifulsoup代码无效问题
  3. 学霸大佬整理,超全 Python 学习路线图(附工具+视频+书籍+面试)
  4. CSS 使网页变灰(文字加动画)
  5. 苏炳添成为小米代言人
  6. energy in transition课文翻译_思迪软件科技 招聘 字幕翻译(远程兼职)
  7. Kotlin协程入门初级篇
  8. freeMarker fmpp 解析PowerDesign PDM探索
  9. python 目标检测 训练_YOLOv3目标检测有了TensorFlow实现,可用自己的数据来训练
  10. 今天走了一天, 才回到家
  11. JQui---------Button心得
  12. 西储大学轴承数据小波变换
  13. java中(person类)
  14. javaweb简化的医院管理系统
  15. c语言已知红球堆有8个球,c语言 1134.docx
  16. 如何安全的清除linux访问记录
  17. Git 里面的 origin 到底代表什么意思?【转载】
  18. 地缘剧本杀 (三):失控(原创小说连载,内含语音)
  19. 少年歌曲计算机教程,《计算机教程第21学时》青少年文学教育丛书.pdf
  20. 数字孪生开发 数字孪生开发软件

热门文章

  1. 毛里塔尼亚COC认证证书
  2. 10-15 查询未登记成绩的学生(MSSQL)
  3. linux mpeg4ip 编译,[操作系统]CentOS6.2下编译mpeg4ip
  4. [Java]Maven/Gradle/Eclipse 工程互转
  5. NSIS,判断安装包是否管理员身份运行的代码
  6. Android功能强大,UI 简洁,交互优雅的通用弹窗
  7. java获取文件名(前缀和后缀以及全名)
  8. python做出来的小程序、可以在win10上面运行_超详细,手把手教你用20行Python代码制作飞花令小程序!...
  9. ArcGIS 网络分析 warning : the delay impedance of locationXX in Facilities exceeds the cutoff impedance
  10. Echarts+大屏