L2-041 插松枝PTA

这篇具有很好参考价值的文章主要介绍了L2-041 插松枝PTA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

L2-041 插松枝PTA

人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上,做成大大小小的松枝。他们的工作流程(并不)是这样的:

  • 每人手边有一只小盒子,初始状态为空。
  • 每人面前有用不完的松枝干和一个推送器,每次推送一片随机型号的松针片。
  • 工人首先捡起一根空的松枝干,从小盒子里摸出最上面的一片松针 —— 如果小盒子是空的,就从推送器上取一片松针。将这片松针插到枝干的最下面。
  • 工人在插后面的松针时,需要保证,每一步插到一根非空松枝干上的松针片,不能比前一步插上的松针片大。如果小盒子中最上面的松针满足要求,就取之插好;否则去推送器上取一片。如果推送器上拿到的仍然不满足要求,就把拿到的这片堆放到小盒子里,继续去推送器上取下一片。注意这里假设小盒子里的松针片是按放入的顺序堆叠起来的,工人每次只能取出最上面(即最后放入)的一片。
  • 当下列三种情况之一发生时,工人会结束手里的松枝制作,开始做下一个:

(1)小盒子已经满了,但推送器上取到的松针仍然不满足要求。此时将手中的松枝放到成品篮里,推送器上取到的松针压回推送器,开始下一根松枝的制作。

(2)小盒子中最上面的松针不满足要求,但推送器上已经没有松针了。此时将手中的松枝放到成品篮里,开始下一根松枝的制作。

(3)手中的松枝干上已经插满了松针,将之放到成品篮里,开始下一根松枝的制作。

现在给定推送器上顺序传过来的 N 片松针的大小,以及小盒子和松枝的容量,请你编写程序自动列出每根成品松枝的信息。

输入格式:

输入在第一行中给出 3 个正整数:N(≤103),为推送器上松针片的数量;M(≤20)为小盒子能存放的松针片的最大数量;K(≤5)为一根松枝干上能插的松针片的最大数量。

随后一行给出 N 个不超过 100 的正整数,为推送器上顺序推出的松针片的大小。

输出格式:

每支松枝成品的信息占一行,顺序给出自底向上每片松针的大小。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

8 3 4
20 25 15 18 20 18 8 5

输出样例:

20 15
20 18 18 8
25 5

代码长度限制

16 KB

Java (javac)

时间限制

500 ms

内存限制

64 MB

其他编译器

时间限制

400 ms

内存限制

64 MB

 解析:栈和队列的模拟,注意新松枝干的判断条件。

         (1)当小盒子已经满了,但推送器上取到的松针仍然不满足要求,需要将松枝压回推送器,判断时可以先判断再pop,不要先pop

         (2)判断循环结束条件需要推送器和小盒子均空才可以,注意不要遗漏。

         (3)注意每根松枝的最后是没有空格的,注意判断,否则会格式错误。文章来源地址https://www.toymoban.com/news/detail-414118.html

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int n,m,k,now=0x3f3f3f3f,num,t,flag;	//num为这一根已插入的数量,flag控制间隔,now为上一次插入的松枝 
queue<int>q;
stack<int>s;
int main(){
	cin>>n>>m>>k;
	for(int i=0;i<n;i++) cin>>t,q.push(t);	
	while(!q.empty()||!s.empty()){
		if(s.size()==0) s.push(q.front()),q.pop();
		if(s.top()<=now){
			now=s.top();
			if(!flag) flag=1;	//输出间隔,每行最后一个无间隔 
			else cout<<" ";
			cout<<now;
			s.pop();
			num+=1;
			if(num>=k){			//这一根已插满 
				cout<<endl,now=0x3f3f3f3f,num=0,flag=0;
			}
		}
		else{
			while(s.top()>now){
				if(q.size()==0||s.size()>=m&&q.front()>now){	//推送器已空 
					cout<<endl,now=0x3f3f3f3f,num=0,flag=0;
					break;
				}
				s.push(q.front()),q.pop();
			}
		}
	}
	return 0;
}

到了这里,关于L2-041 插松枝PTA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 项目上线 | 兰精携手盖雅工场,数智驱动绿色转型

    近年来,纺织纤维行业零碳行动如火如荼。作为低碳环保消费新时尚引领者,同时也是纤维领域隐形冠军,兰精在推进绿色发展的同时,也在不断向内探索企业数字化转型之道,以此反哺业务快速扩张。 数智转型,管理先行。人作为关键一环,在转型中起到了重要作用。兰精

    2024年02月02日
    浏览(42)
  • 盖雅工场发布数字化转型人效实践案例集

    近日,盖雅工场重磅发布《聚集人效,重塑组织:典范企业管理实践案例集》(以下简称案例集)。 过去一年,盖雅工场携旗下盖雅学苑访谈了来自制造业、服务业、连锁零售业、汽车产业的几十家企业后,并在案例集中记述了包括7-Eleven、施耐德、佛吉亚、妮维雅等11家典

    2024年02月03日
    浏览(35)
  • 盖雅工场获评2023年度苏州市服务型制造示范企业(平台)

    苏州市工信局公布 2023年度苏州市服务型制造示范企业(平台)名单 遴选出服务型制造示范企业34家 服务型制造示范平台19个 苏州盖雅信息技术有限公司 “劳动力管理SaaS云平台服务” 获评2023年度苏州市服务型制造示范平台 全市唯一获评的 人力资源服务领域企业(平台)

    2024年02月11日
    浏览(54)
  • 为什么要将应用微服务化?

    其实在十多年前,“架构师”并不是一个需求很大的职业,一来那时还没有“全民App”级别的应用,除了三大门户网站以外,其他的网上应用业务压力并不大;二来也没有现如今这么丰富的技术选型,几乎清一色的PHP(坊间一直流传着PHP是世界上最好的语言这个说法,我08年左右

    2024年01月18日
    浏览(37)
  • 为什么要将应用微服务化

    其实在十多年前,“架构师”并不是一个需求很大的职业,一来那时还没有“全民App”级别的应用,除了三大门户网站以外,其他的网上应用业务压力并不大;二来也没有现如今这么丰富的技术选型,几乎清一色的PHP(坊间一直流传着PHP是世界上最好的语言这个说法,我08年左右

    2024年01月17日
    浏览(31)
  • 亚马逊工人罢工快递延误,谷歌无人机送货却业绩翻倍

    导读:无人机配送早在几年前就已实现,不过近期 ,它的存在显得尤为重要。随着美国疫情形势愈加严峻,多州颁布「居家令」。当出门购物已经成为奢侈的事情之时,无人机出场,为人们配送药物与食品,可谓雪中送炭。 今年的新冠病毒全球大流行,让我们更加依赖于网

    2024年02月21日
    浏览(32)
  • 笔记本电脑电池鼓包了,要不要将其取下来?

    当我们使用笔记本电脑时,电池鼓包是一个令人担忧的问题。电池鼓包指的是电池内部出现问题后,外壳膨胀或变形,形成凸起的状态。这种情况可能由于电池老化、过热、设计缺陷或其他故障引起。在面对电池鼓包问题时,我们是否应该将其取下来呢?让我们一起来探讨一

    2024年02月06日
    浏览(29)
  • LeetCode、2462. 雇佣 K 位工人的总代价【中等,最小堆+双指针】

    博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。 博主所有博客文件目录索引:博客目录索引(持续更新) 视频平台:

    2024年01月19日
    浏览(27)
  • 041、TiDB特性_在线索引

    索引 DDL 索引:指向行记录的指针以加快数据检索速度 快速找到表里的行记录 避免全表扫描 提高查询性能 以下 TiDB 约束默认提供索引: Primary Key Unique Key 可以通过 CREATE INDEX 语句创建 索引信息系统表: information_schema.tidb_indexes,索引名称: KEY_NAME SHOW INDEX FROM table_name; 获取索引的

    2024年02月16日
    浏览(29)
  • git merge:要将一个分支的代码合并到另一个分支

    在Git中,要将一个分支的代码合并到另一个分支,可以使用git merge命令。以下是将v6 分支的代码合并到v6.1分支的基本步骤: 确保在目标分支上: 在执行合并之前,请确保你在目标分支(v6.1)上。可以使用以下命令切换到目标分支: 拉取最新代码: 为了避免合并冲突,确保

    2024年04月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包