PTA L2-032 彩虹瓶

2023-11-03

彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。

假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N)。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将小球从工厂里搬到装填场地。如果搬来的这箱小球正好是可以装填的颜色,就直接拆箱装填;如果不是,就把箱子先码放在一个临时货架上,码放的方法就是一箱一箱堆上去。当一种颜色装填完以后,先看看货架顶端的一箱是不是下一个要装填的颜色,如果是就取下来装填,否则去工厂里再搬一箱过来。

如果工厂里发货的顺序比较好,工人就可以顺利地完成装填。例如要按顺序装填 7 种颜色,工厂按照 7、6、1、3、2、5、4 这个顺序发货,则工人先拿到 7、6 两种不能装填的颜色,将其按照 7 在下、6 在上的顺序堆在货架上;拿到 1 时可以直接装填;拿到 3 时又得临时码放在 6 号颜色箱上;拿到 2 时可以直接装填;随后从货架顶取下 3 进行装填;然后拿到 5,临时码放到 6 上面;最后取了 4 号颜色直接装填;剩下的工作就是顺序从货架上取下 5、6、7 依次装填。

但如果工厂按照 3、1、5、4、2、6、7 这个顺序发货,工人就必须要愤怒地折腾货架了,因为装填完 2 号颜色以后,不把货架上的多个箱子搬下来就拿不到 3 号箱,就不可能顺利完成任务。

另外,货架的容量有限,如果要堆积的货物超过容量,工人也没办法顺利完成任务。例如工厂按照 7、6、5、4、3、2、1 这个顺序发货,如果货架够高,能码放 6 只箱子,那还是可以顺利完工的;但如果货架只能码放 5 只箱子,工人就又要愤怒了……

本题就请你判断一下,工厂的发货顺序能否让工人顺利完成任务。

输入格式:

输入首先在第一行给出 3 个正整数,分别是彩虹瓶的颜色数量 N(1<N≤103)、临时货架的容量 M(<N)、以及需要判断的发货顺序的数量 K。

随后 K 行,每行给出 N 个数字,是 1 到N 的一个排列,对应工厂的发货顺序。

一行中的数字都以空格分隔。

输出格式:

对每个发货顺序,如果工人可以愉快完工,就在一行中输出 YES;否则输出 NO

输入样例:

7 5 3
7 6 1 3 2 5 4
3 1 5 4 2 6 7
7 6 5 4 3 2 1

输出样例:

YES
NO
NO

 

题意:简单模拟,注意栈容量超过最大容量和某序号被压在栈底无法拿出的情况。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m,k,t;
	cin>>n>>m>>k;
	for(int i=0;i<k;i++){
		int flag=1,now=1;
		stack<int>s;
		for(int j=1;j<=n;j++){
			cin>>t;
			if(t==now){
				now++;
				while(!s.empty()&&s.top()==now) now++,s.pop();
			}
			else{
				s.push(t);
				if(s.size()>m) flag=0;	//容量过大,不符题意 
			}
		}
		if(now!=n+1) flag=0;	//某序号被压在栈底,不符题意 
		if(flag) cout<<"YES";
		else cout<<"NO";
		if(i!=k-1) cout<<endl;
	}
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PTA L2-032 彩虹瓶 的相关文章

随机推荐

  • Apollo学习笔记

    Apollo学习笔记 Apollo课程 智能驾驶入门课程 无人驾驶概览 1 软件层分为三层 实时操作系统 RTOS 确保在给定时间内完成特定任务 实时时确保系统稳定性 驾驶安全性的重要要求 通过在Ubuntu Linux操作系统加入Apol
  • 带有Cookie功能的HTTP访问函数,GET,PUT/POST

    define AFX INET SERVICE FTP INTERNET SERVICE FTP define AFX INET SERVICE HTTP INTERNET SERVICE HTTP define AFX INET SERV
  • Oracle删除数据的三种方式

    Oracle删除数据的三种方法 删除表 记录和结构 的语句delete truncate drop drop命令 drop table 表名 例如 删除学生表 student drop table student 注意 1 用drop删除表
  • node.js学习——初始node,node基本介绍,环境安装,运行第一个node程序。

    node js学习 初始node node基本介绍 环境安装 运行第一个node程序 1 node基本介绍 为什么学习Node js 什么是node js Node js的特性 Node js能做什么 2 Node环境安装 环境安装 3 第
  • Oracle中connect by...start with...的使用

    一 语法 大致写法 select from some table where 条件1 connect by 条件2 start with 条件3 其中 connect by 与 start with 语句摆放的先后顺序不影响查询的结果 wh
  • android studio导入源码(来自github上下载的压缩包)

    Francis学习笔记之android studio解决系列一 andorid studio导入源码问题及android studio 中途出错解决办法 一 导入源码 首先看一下从github下载的压缩包解压后文件内容 从上面发现没有gra
  • 【深度长文】循序渐进解读Oracle AWR性能分析报告

    深度长文 循序渐进解读Oracle AWR性能分析报告 原创 2016 10 19 韩锋 DBAplus社群 http mp weixin qq com s biz MzI4NTA1MDEwNg mid 2650757102 idx 1 s
  • Android onNewIntent调用时机

    1 onNewIntent 首先看一下Activity 的生命周期 从图中可知 初次启动 Activity 时 调用顺序为 onCreate gt onStart gt onResume 那么 onNewIntent 是什么时候被触发的呢
  • 动态解析ipv6地址,实现域名访问家里网络

    前提已有IPv6地址 有阿里云的域名 非顶级域名便宜 一般几块一年 脚本实现方式 获取token 如果没有创建一个 获取阿里云AccessToken 修改脚本变量值 运行后运行脚本 即可在域名解析找到新增的记录 因为供应商提供dns不固定
  • 一文带你熟练掌握android的arm32汇编指令。

    1 ARM32的常见指令解析 ADC 带进位加法指令 ADD 加法指令 AND 逻辑与指令 B 分支指令 BIC 位清零指令 BL 带返回的分支指令 BLX 带返回和状态却换的分支指令 BX 带状态却换的分支指令 CDP 协处理器数据操作指
  • 内联函数inline和宏定义

    内联函数inline和宏定义 内联函数的优越性 一 inline定义的类的内联函数 函数的代码被放入符号表中 在使用时直接进行替换 像宏定义一样展开 没有了调用的开销 效率很高 二 类的内敛函数是一个真正的函数 三 使用内联函数inline
  • 【华为OD机试】 比赛的冠亚季军【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 有N 3 N lt 10000 个运动员 他们的id为0到N 1 他们的实力由一组整数表示 他们之间进行比赛 需要决出冠亚军 比赛的规则是0号和1号比赛 2号和3号比
  • Python网络爬虫--项目实战(2)--起点小说爬取

    一 目标 爬取起点小说一本免费小说 并将所有章节名称和内容都保存到本地 我选择爬取 我真的好想打球 二 分析 2 1 网页分析 ctrl U 进入网页的源代码 输入任意章节名称 可以在代码中找到 初步判定该网页为静态加载的 2 2 反爬分析
  • [整理]Android屏幕适配(不同的屏幕分辨率和尺寸)

    Android屏幕适配 目录 Android屏幕适配 概念区分 换算关系 划分标准 Android手机常见尺寸和对应分辨率 部分Android测试机分析 补充9图的使用说明 在实际开发过程中 会遇到不同的机型 为了让控件和布局要在不同屏幕上
  • oracle-02 基本命令

    step1 eg 这一部分内容会保存到 test sql文件中 step2 step 3 当前用户有哪些表格 SQL gt desc user tables SQL gt select table name from user tables
  • 慢sql监控

    1 开启慢sql日志 1 1 windows window的mysql配置 编辑C ProgramData MySQL MySQL Server 5 7 my ini 添加如下 是否开启慢查询日志 1表示开启 0表示关闭 slow quer
  • MySQL中IF函数的使用方法

    定义 IF函数根据条件的结果为true或false 返回第一个值 或第二个值 语法 IF condition value if true value if false 参数 参数 描述 condition 必须 判断条件 value if
  • 【Webpack,Vite】开发中遇到常见问题集合

    1 sass export export 是用于sass文件和js文件关联的 用此可以将sass中样式类似于es6语法中export导出 并在其他样式或者js文件中直接使用 但是 目前只适用于 webpack4 或者 node sass v
  • 【Leetcode刷题】算法:两数之和

    文章目录 一 题目描述 二 尝试1 三 尝试2 四 尝试3 五 尝试4 一 题目描述 二 尝试1 from typing import List class Solution def twoSum self nums List int ta
  • PTA L2-032 彩虹瓶

    彩虹瓶的制作过程 并不 是这样的 先把一大批空瓶铺放在装填场地上 然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里 假设彩虹瓶里要按顺序装 N 种颜色的小球 不妨将顺序就编号为 1 到 N 现在工厂里有每种颜色的小球各一箱 工人需要一箱