L2-041 插松枝 判断量少(PTA 天梯赛)

news2024/7/6 18:21:34

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

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

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

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

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

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

输入格式:

输入在第一行中给出 3 个正整数:N(≤10^3),为推送器上松针片的数量;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

 

#include<iostream>
#include<stack>
#include<queue>
using namespace std;

stack<int>stk;//盒子 
queue<int>que;//推送器 
queue<int>que1;//松干 
int N,M,K;	

void solve(){
	while(!que.empty() || !stk.empty()){
		int k=K;
		//插入第一个 
		if(!stk.empty()){que1.push(stk.top());  stk.pop();k--;}
		else           { que1.push(que.front());que.pop();k--;}
		//继续插入 
		while(k>0 && (!que.empty() || !stk.empty())){			
			if(!stk.empty() && stk.top()<=que1.back()){//盒子里的满足 			
				que1.push(stk.top());  
				stk.pop();
				k--;							
			}
			else if(!que.empty() && que.front()<=que1.back()){//推送器推出的满足													
				que1.push(que.front());
				que.pop();
				k--;
			}	
			else if(!que.empty() && (int)stk.size()<M){	//推送器推出的不满足,盒子还能装		
				stk.push(que.front()); 
				que.pop();						
			}	
			else break;	
		}
		while(!que1.empty()){//输出 
			cout<<que1.front();
			que1.pop();
			if(!que1.empty())cout<<" ";
			else cout<<endl;
		}
	}	 
}

int main(){
	cin>>N>>M>>K;
	int v,i=N;
	while(i--){ cin>>v; que.push(v);}
	solve();         
    return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机组成原理第二章——数据的表示与运算(下)

提示&#xff1a;时光清浅处 一步一安然 文章目录前言2.3.1 浮点数的表示2.3.2 IEEE7542.2.3 浮点数的运算前言 本节主要讲三个问题&#xff0c;浮点数的表示&#xff0c;IEEE 754标准&#xff0c;浮点数的加减运算 2.3.1 浮点数的表示 浮点数的作用和基本原理 定点数可表示…

由浅入深了解HashMap源码

由经典面试题引入&#xff0c;讲解一下HashMap的底层数据结构&#xff1f;这个面试题你当然可以只答&#xff0c;HashMap底层的数据结构是由&#xff08;数组链表红黑树&#xff09;实现的&#xff0c;但是显然面试官不太满意这个答案&#xff0c;毕竟这里有一个坑需要你去填&a…

Java容器使用注意点

前置&#xff1a;问题 判空集合转map集合遍历集合去重集合转数组数组转集合 一&#xff1a;集合判空 《阿里巴巴 Java 开发手册》的描述如下&#xff1a; 判断所有集合内部的元素是否为空&#xff0c;使用 isEmpty() 方法&#xff0c;而不是 size()0 的方式。 我们在开发中也…

AI大模型突围战

最近&#xff0c;GPT赛道上争议不断&#xff0c;先是GPT-4的问世&#xff0c;用一些亮眼的功能让人类感叹自己是不是要丢工作&#xff1f;紧接着又有一封联名信刷屏&#xff0c;图灵奖得主、AI三巨头之一的约书亚本吉奥、埃隆马斯克等123个业界大佬&#xff0c;呼吁所有人工智能…

Vcpkg安装指定版本包或自定义安装包

文章目录前言寻找版本安装后话前言 windows一直用着vcpkg作为C跨平台开发的包管理&#xff0c;有些依赖要指定版本库&#xff0c;vcpkg目前最新的openssl版本是3.1.0&#xff0c;我想安装其他版本为例&#xff0c;开始本教程 寻找版本 以openssl举例&#xff0c;在vcpkg目录中…

react3:受控组件(表单默认变成受控)-组件通信 - typescript项目

受控组件&#xff1a;表单 非受控组件表单元素值不受所在组件状态的控制, 我们将这样的表单元素称作: 非受控组件. 受控组件受控组件 : 值受到 React 组件状态控制的表单元素一般是通过 defaultValue 属性, onChange 事件配合将非受控组件变为受控组件. 多表单元素操作 &#…

如果当前node.js版本和项目需要版本不一样,卸载重装其他版本node.js的方法

其实这种node.js版本不一样的问题&#xff0c;可以选择用nvm来管理node.js的不同版本。 此处仅总结卸载当前版本node.js重新安装所需版本node.js的方法 另&#xff1a;现在 用Vite官网里面的 yarn/npm等 的方法&#xff0c;创建Vue3项目——需要12版本的node.js 以下以本人 …

Vue3中readonly 与 shallowReadonly的使用区别?

文章目录前言readonly强行修改readonly&#xff1a;shallowReadonlyshallowReadonly强行修改结果&#xff1a;前言 readonly: 让一个响应式数据变为只读的&#xff08;深只读&#xff09;。 shallowReadonly&#xff1a; 让一个响应式数据变为只读的&#xff08;浅只读&#x…

真正好用的工业品ERP系统应该是什么样的?

一个好用的进销存ERP系统应该有以下特点&#xff1a; 1. 全面覆盖企业经营流程&#xff0c;包括采购、销售、库存、财务等模块&#xff0c;能够实现全方位的管理和控制。 2. 自定义配置&#xff0c;灵活地适应大多数用户的需求。 3. 数据精准、实时化&#xff0c;支持统计分…

基于CALMET诊断模型的高时空分辨率精细化风场模拟技术应用

【查看原文】气象数据相关分析及使用系列&#xff1a;基于CALMET诊断模型的高时空分辨率精细化风场模拟技术应用 在研究流场时&#xff0c;常用观测、模型风洞测试和数值模拟方法进行研究。但时常遇到研究区气象站点分布稀疏&#xff0c;不能代表周边复杂地形的风场。风洞模拟…

day7 线程的取消和清理

线程的取消 意义&#xff1a;随时杀掉一个线程 int pthread_cancel(pthread_t thread); 注意&#xff1a;线程的取消要有取消点才可以&#xff0c;不是说取消就取消&#xff0c;线程的取消点主要是阻塞的系统调用 如果没有取消点&#xff0c;手动设置一个&#xff1b; voi…

【网络应用开发】实验4——会话管理

目录 会话管理预习报告 一、实验目的 二、实验原理 三、实验预习内容 1. 什么是会话&#xff0c;一个会话的生产周期从什么时候&#xff0c;到什么时候结束&#xff1f; 2. 服务器是如何识别管理属于某一个特定客户的会话的&#xff1f; 3. 什么是Cookie&#xff0c;它的…

全网最详细,Python接口自动化测试接口加密实战,框架撸码.......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 如果接口测试仅仅只…

【驱动开发】Windows过滤平台(WFP,Windows Filtering Platform)

文章目录Windows的发展历程TDI简介WFP简介用户态基础过滤引擎&#xff08;BFE&#xff09;内核态过滤引擎&#xff08;KMFE&#xff09;垫片&#xff08;Shim&#xff09;分层&#xff08;Layer&#xff09;子层&#xff08;Sub Layer&#xff09;过滤器&#xff08;Filter&…

【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)

可在系列教程的基础上继续开发&#xff0c;也可以单独使用 【微信小程序-原生开发】系列教程 效果预览 代码实现 点击触发生成海报 在活动详情页&#xff0c;指定点击某图标/按钮&#xff0c;触发跳转到生成海报的页面 pages\components\party\detail\index.js getPoster() …

OpenTex 企业内容管理平台

OpenText 企业内容管理平台 将内容服务与领先应用程序集成&#xff0c;弥合内容孤岛、加快信息流并扩大治理 什么是内容服务集成&#xff1f; 内容服务集成通过将内容管理平台与处于流程核心的独立应用程序和系统连接起来&#xff0c;支持并扩展了 ECM 的传统优势。 最好的内…

【通过Cpython3.9源码看看python字符串对象的创建】

CPython源码解析之PyUnicode_New函数实现 简介 PyUnicode_New是Python源码中用于创建Unicode字符串对象的函数&#xff0c;定义在UnicodeObject.c文件中。该函数接受一个长度参数size和最大字符值参数maxchar(根据传入的最大字符值 maxchar 确定新创建的字符串对象所需的存储…

百度工程师的软件质量与测试随笔

作者 | 百度移动生态质效工程师们 导读 在降本增效、以chatGPT为代表的大模型技术横空出世的背景下&#xff0c;对软件质量和软件测试的领域也带来了巨大冲击&#xff0c;也使得软件质量工作者开始变得焦虑&#xff0c;主要体现在&#xff1a;公司对软件质量从业者的不重视加剧…

SQL Server的执行计划(Execution Plans)

执行计划一、背景二、显示和保存执行计划三、显示估计的执行计划四、显示实际执行计划五、以 XML 格式保存执行计划六、比较和分析执行计划6.1、比较执行计划6.2、分析实际执行计划总结一、背景 为了能够执行查询&#xff0c;SQL Server 数据库引擎必须分析该语句&#xff0c;…

21100颗星的Locust性能测试工具到底有多牛!

一句话&#xff1a;用普通的Python编写可扩展的负载测试&#xff0c;就够了&#xff0c;懂得自然懂&#xff01; Locust是一个易于使用、可编写脚本和可扩展的性能测试工具。你在常规的Python代码中定义你的用户的行为&#xff0c;而不是受制于一个UI或领域特定的语言&#xff…