电子学会青少年软件编程(C/C++)5级等级考试真题试卷(2024年6月)

========================================================================

答案和更多内容请查看网站:【试卷中心 -----> 电子学会 ----> C/C++ ----> 五级】

网站链接

青少年软件编程历年真题模拟题实时更新

=======================================================================

青少年软件编程(C/C++)5级等级考试真题试卷(2024年6月)
编程题
第 1 题 列车调度题目描述

火车站的列车调度铁轨的结构如下图所示。

两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有 9 趟列车,在入口处按照 { 8,4,2,5,3,9,1,6,7 } 的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?

输入

输入第一行给出一个整数 N (2 ≤ N ≤ 105),下一行给出从 1 到 N的整数序号的一个重排列。数字间以空格分隔。

输出

在一行中输出可以将输入的列车按序号递减的顺序调离所需要的最少的铁轨条数。

样例输入

9

8 4 2 5 3 9 1 6 7

样例输出

4

查看答案

复制代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int a[n] = {0};
    int x;//每次输入的列车序号
    int t = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> x;
        if (t == 0 || a[t - 1] < x) //t-1是因为a[t]是0,a[t-1]才是真正的序号
        //如果最后一个道路的最后一个元素都比x小,
        //说明前几条道路也没有能容下x的了
        {
            a[t] = x; //第一个进去的,一定是这一列最大的
            // printf("t=%d  a[%d]=%d  x=%d\n",t,i,a[i],x);
            t++;
        }
        int l = 0, r = t, mid; //t代表了当前开辟的道路的数量
        while (l < r)
        {
            mid = (r - l) / 2 + l;
            if (x <= a[mid])
            {
                r = mid;
            }
            else
                l = mid+1 ;
        }
        a[l] = x;
        //测试用:
        // for (int j = 0; j < t; j++)
        // {
        //     cout << a[j] << ' ';
        // }
        // cout << endl;
    }
    cout << t;
    return 0;
}

第 2 题 实验室使用排期

受新冠疫情影响,当前大家的活动都必须注意保持充分的社交距离,国家实验室的使用也同样受到了严格的限制。假设规定任何一个时间点上,实验室内最多只能有 1 个人,且每个人都必须提前申请实验室的使用,只有申请被批准后才能进入。现给定一批第二天的实验室使用申请,你需要写个程序自动审批,使得能够被批准的申请数量最大化。

输入格式:

输入第一行首先给出一个正整数 N(≤2×103),为申请总量。随后 N 行,每行按以下格式给出申请信息:

hh:mm:ss hh:mm:ss

Copy

其中 hh:mm:ss 表示一天内的时间点"小时:分钟:秒钟",最早从 00:00:00 开始,最晚到 23:59:59 结束。第一个时间点为进入实验室的时间,第二个是离开时间。题目保证离开时间在进入时间之后。

注意所有时间都在一天之内。时间按 24 小时显示。

输出格式:

在一行中输出能够被批准的最大申请数量。

输入样例:

7

18:00:01 23:07:01

04:09:59 11:30:08

11:35:50 13:00:00

23:45:00 23:55:50

13:00:00 17:11:22

06:30:50 11:42:01

17:30:00 23:50:00

输出样例:

5

样例解释:

除了最后两个申请,其它都可以被批准。

查看答案

复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct ff{
    int a,b;
}a[10010];
int f(string s){
    int sum=0;
    sum+=((s[0]-'0')*10+(s[1]-'0'))*3600;
    sum+=((s[3]-'0')*10+(s[4]-'0'))*60;
    sum+=(s[6]-'0')*10+(s[7]-'0');
    return sum;
}
bool cmp(ff p,ff q){
    if(p.b==q.b) return p.a<q.a;
    return p.b<q.b;
}
signed main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        string x,y;
        cin>>x>>y;
        a[i].a=f(x);
        a[i].b=f(y);
    }
    sort(a+1,a+n+1,cmp);
    int cnt=1;
    int t=a[1].b;
    for(int i=2;i<=n;i++){
        if(a[i].a>=t){
            cnt++;
            t=a[i].b;
        }
    }
    cout<<cnt;
}

========================================================================

答案和更多内容请查看网站:【试卷中心 -----> 电子学会 ----> C/C++ ----> 五级】

网站链接

青少年软件编程历年真题模拟题实时更新

=======================================================================

相关推荐
DjangoJason5 小时前
C++ 仿RabbitMQ实现消息队列项目
开发语言·c++·rabbitmq
大阳1236 小时前
线程(基本概念和相关命令)
开发语言·数据结构·经验分享·算法·线程·学习经验
weixin_307779137 小时前
VS Code配置MinGW64编译GNU 科学库 (GSL)
开发语言·c++·vscode·算法
学行库小秘7 小时前
ANN神经网络回归预测模型
人工智能·python·深度学习·神经网络·算法·机器学习·回归
没落之殇8 小时前
基于C语言实现的HRV分析方法 —— 与Kubios和MATLAB对比
算法
秋难降8 小时前
线段树的深度解析(最长递增子序列类解题步骤)
数据结构·python·算法
Peter_Deng.8 小时前
Linux 下基于 TCP 的 C 语言客户端/服务器通信详解(三个示例逐步进阶)
服务器·c语言·网络
楚韵天工8 小时前
基于GIS的无人机模拟飞行控制系统设计与实现
深度学习·算法·深度优先·无人机·广度优先·迭代加深·图搜索算法
你也向往长安城吗9 小时前
推荐一个三维导航库:three-pathfinding-3d
javascript·算法