2019年GPLT L2-4 彩虹瓶 比赛题解 中国高校计算机大赛-团体程序设计天梯赛题解

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

假设彩虹瓶里要按顺序装 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≤10^3?? )、临时货架的容量 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<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<stack>
#include<cmath>
#include<cstring>
#include<cstdlib>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
typedef long long ll;

stack<int> st;
int s[2000];
int main() {
    int n, m, k;
    cin >> n >> m >> k;
    while (k--) {
        while (!st.empty())st.pop();
        for (int i = 0; i < n; i++) {
            cin >> s[i];
        }
        int now = 1;
        int yes = 1;
        for (int i = 0; i < n; i++) {
            if (s[i] == now) {
                now++;
                while (st.empty()==false && st.top() == now) {
                    st.pop();
                    now++;
                }
            }
            else {
                st.push(s[i]);
                if (st.size() > m) {
                    yes = 0;
                }
            }
        }
        if (yes == 0 || st.size() > 0) {
            cout << "NO" << endl;
        }
        else {
            cout << "YES" << endl;
        }
    }
}

原文地址:https://www.cnblogs.com/bobodesu/p/10630064.html

时间: 2024-10-08 08:29:53

2019年GPLT L2-4 彩虹瓶 比赛题解 中国高校计算机大赛-团体程序设计天梯赛题解的相关文章

2019年GPLT L2-1 特立独行的幸福 比赛题解 中国高校计算机大赛-团体程序设计天梯赛题解

对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1.则 19 就是幸福数.显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的.例如 82.68.100 的幸福是依附于 19 的.而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的:其独立性就是依附于它的的幸福

2019年GPLT L2-3 深入虎穴 比赛题解 中国高校计算机大赛-团体程序设计天梯赛题解

著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门-- 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号.007 发现不存在两条路通向同一扇门. 内线告诉他,情报就藏在迷宫的最深处.但是这个迷宫太大了,他需要你的帮助 -- 请编程帮他找出距离入口最远的那扇门. 输入格式:

团体程序设计天梯赛 https://www.patest.cn/contests/gplt

https://www.patest.cn/contests/gplt 代码: L2-21 //#include<iostream> //#include<cstdio> //#include<cstring> //#include<cmath> //#include<queue> //#include<set> //#include<algorithm> //#include<map> //#define m

L2-032 彩虹瓶 (25 分)

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

2019年全国高校计算机能力挑战赛 C语言程序设计决赛

2019年全国高校计算机能力挑战赛 C语言程序设计决赛 毕竟这个比赛是第一次举办,能理解.. 希望未来再举办时,能够再完善一下题面表述.数据范围. 话说区域赛获奖名额有点少吧.舍友花60块想混个创新创业分也太难.. 水进了决赛圈,一共6题. 前4题,大概C语言课后习题的难度? 第5题,贪心排个序就好了吧 第6题,图论,拓扑排序,但我用暴力的,因为不知道范围呀,希望能骗点分. 第1题 #include<stdio.h> const int maxn = 10050; char s[maxn];

2019年10月北京科博会,中国科技第一展来了!

2019年10月24日,一年一度的中国北京国际科技产业博览会(简称北京科博会)将在中国国际展览中心拉开序幕.科博会以"坚持智能创新,推动科技发展"为主题,聚焦实体经济,突出创新驱动,促进科学技术与实体经济融合发展.目前,是中国规模最大.最具影响力的科技类展会,有"中国科技第一展"之称. 21年来,科博会已成为北京乃至中国的一张名片.在改革开放四十周年,科博会走过了二十一个年头的关键节点.那么,22岁的中国北京国际科技产业博览会将会是什么模样呢?据科博会公布,第二十一

GPLT天梯赛 L2-022. 重排链表

L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L2→....例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3. 输入格式: 每个输入包含1个测试用例.每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (<= 105).结点的地址是5位非负整数,NULL地址用-

2019北京物联网智慧城市大数据博览会开启中国之路

邀 请 函 时间2019年05月16-18日 地点 中国?北京亦创国际会展中心4组织单位 特邀单位:××× ×××商务部批准单位:北京市商务委员会主办单位:中国电子商会物联网技术产品应用专业委员会北京铭世博国际展览有限公司 支持单位:××× ×××中国智能家居产业联盟 中华物联网联盟国家信息化专家咨询委员会 中国物联网产业协会 承办单位:北京铭世博国际展览有限公司物联世界 智慧全球物联网是建立在信息技术与网络技术广泛应用基础上,为改善民生.惠及百姓.实现"智慧物联"目标提供新动力的庞大

2019浙大计算机考研机试模拟赛(2)——概念专题

题目链接   引用自晴神OJ A - 边覆盖 B - 极大独立集 C - 稳定婚姻问题 D - 笛卡尔树 没赶得上全程的比赛,就做了两道,后面两道以后有时间再补.两道都是概念题,比较基础~ 以下是题解 A - 边覆盖 Case Time Limit: 200 MS (Others) / 400 MS (Java)       Case Memory Limit: 256 MB (Others) / 512 MB (Java) Accepted: 199      Total Submission