IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 2022天梯赛L2-1插松枝 -> 正文阅读

[数据结构与算法]2022天梯赛L2-1插松枝

题目

题目描述

在这里插入图片描述

样例输入

8 3 4
20 25 15 18 20 18 8 5

样例输出

20 15
20 18 18 8
25 5

浅谈总结

这里我就放上截图吧,在开始写题解之前我想先写一下我的感受,我没有想到最后自己的天梯赛的结果竟然是这样,我在这道题上纠结了将近一个半小时。事后老师建立起复现赛之后我根据当时的代码稍微改了一下,交了之后过了,当时只过了一分,可能还是我自己能力不足吧。
虽然竞赛结束了,但是人生并没有结束,但我觉得重要的并不是拿不拿奖,是能不能从这样一次次的实践中收获经验和教训吧,以后我会引以为戒,也希望能看到这篇文章的各位能引以为戒。
我觉得最主要的点还是要正确地模拟这个过程,具体要使用的是while还是if是需要好好想一下的,而不能想当然的就写了上去。
具体需要注意的地方我都写到代码的注释里了。

代码

#include <bits/stdc++.h>

using namespace std;
const int maxn=100005;
int n,m,k,s;
int u,v,w;

queue<int> qus[1005];//表示每个玩具
stack<int> he;//表示篮子
queue<int> qu;//表示传送带

int main()
{

    int zan;
    cin>>n>>m>>k;
    for(int i=1; i<=n; i++)
    {
        cin>>zan;
        qu.push(zan);//将值送入传送带
    }
    for(int i=0; i<=1000; i++)
    {
        qus[i].push(200);//预添加一个比较大的值,这样就不用判断当前玩具空的情况了额,最后只要不输出这个元素就行了
    }
    int cnt=0;
    zan=0;
    while(true)
    {
        if(qu.empty()&&he.empty())//如果传送带上和盒子里面都没有松枝了,退出
        {
            cnt++;
            break;
        }
        if((int)qus[cnt].size()==(k+1))//如果当前的玩具上松枝数量到上限了,换下一个玩具
            cnt++;
        if(!he.empty())//先看盒子里面空不空
        {
            zan=he.top();//拿出盒子里最上层的值
            if(zan>qus[cnt].back())//判断这个值和当前玩具上松针的大小关系
            {
                if(qu.empty())//如果这时候传送带空了,那就只能选下一个玩具了
                    cnt++;
                while(!qu.empty())//一直在传送带上取,直到从传送带上取下值了或者传送带上的值已经被取完了或者此时盒子已经满了
                {
                    zan=qu.front();
                    if(zan<=qus[cnt].back())//取到值了
                    {
                        qus[cnt].push(zan),qu.pop();
                        break;
                    }
                    else if((int)he.size()<m)//放入盒子
                        he.push(zan),qu.pop();
                    else//盒子满了
                    {
                        cnt++;
                        break;
                    }

                }
            }
            else//比这个值小的化就直接用盒子里的松针
            {
                he.pop();
                qus[cnt].push(zan);
            }
        }
        else
        {
            while(!qu.empty())//盒子里面是空的,其实就相当于盒子的值我们不能取,所以把上面关于这一部分的代码直接粘下来就行了
            {
                zan=qu.front();
                if(zan<=qus[cnt].back())//取到值了
                {
                    qus[cnt].push(zan),qu.pop();
                    break;
                }
                else if((int)he.size()<m)//放入盒子
                    he.push(zan),qu.pop();
                else//盒子满了
                {
                    cnt++;
                    break;
                }
            }
        }
    }
    for(int i=0; i<cnt; i++)
    {
        qus[i].pop();
        cout<<qus[i].front();
        qus[i].pop();
        while(!qus[i].empty())
        {
            cout<<" "<<qus[i].front();
            qus[i].pop();
        }
        cout<<endl;
    }
    return 0;
}
/*
8 3 4
20 25 15 18 20 18 8 5
*/
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:01:52  更:2022-04-26 12:04:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:44:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码