Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【CCF】学生排队

【CCF】学生排队

作者头像
喜欢ctrl的cxk
发布于 2019-11-08 09:44:12
发布于 2019-11-08 09:44:12
59300
代码可运行
举报
文章被收录于专栏:Don的成长史Don的成长史
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42449444/article/details/84966738

试题编号:

201703-2

试题名称:

学生排队

时间限制:

1.0s

内存限制:

256.0MB

问题描述:

问题描述   体育老师小明要将自己班上的学生按顺序排队。他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整。一次调整小明可能让一位同学出队,向前或者向后移动一段距离后再插入队列。   例如,下面给出了一组移动的例子,例子中学生的人数为8人。   0)初始队列中学生的学号依次为1, 2, 3, 4, 5, 6, 7, 8;   1)第一次调整,命令为“3号同学向后移动2”,表示3号同学出队,向后移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 5, 3, 6, 7, 8;   2)第二次调整,命令为“8号同学向前移动3”,表示8号同学出队,向前移动3名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 5, 8, 3, 6, 7;   3)第三次调整,命令为“3号同学向前移动2”,表示3号同学出队,向前移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 3, 5, 8, 6, 7。   小明记录了所有调整的过程,请问,最终从前向后所有学生的学号依次是多少?   请特别注意,上述移动过程中所涉及的号码指的是学号,而不是在队伍中的位置。在向后移动时,移动的距离不超过对应同学后面的人数,如果向后移动的距离正好等于对应同学后面的人数则该同学会移动到队列的最后面。在向前移动时,移动的距离不超过对应同学前面的人数,如果向前移动的距离正好等于对应同学前面的人数则该同学会移动到队列的最前面。 输入格式   输入的第一行包含一个整数n,表示学生的数量,学生的学号由1到n编号。   第二行包含一个整数m,表示调整的次数。   接下来m行,每行两个整数p, q,如果q为正,表示学号为p的同学向后移动q,如果q为负,表示学号为p的同学向前移动-q。 输出格式   输出一行,包含n个整数,相邻两个整数之间由一个空格分隔,表示最终从前向后所有学生的学号。 样例输入 8 3 3 2 8 -3 3 -2 样例输出 1 2 4 3 5 8 6 7 评测用例规模与约定   对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ m ≤ 1000,所有移动均合法。

解题思路:

这题是利用vector来操作的,先对学生序号进行初始化,然后删除指定位置的学号,并将该指定学号插入到它的最终位置,最后对vector进行输出即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
100分代码:
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int n,m;//n个学生,m次移动 
    cin >> n >> m;
    vector<int> v; 
    for(int i = 0; i < n; i++)
    {
        v.push_back(i+1);   //初始化学生序号
    }
    for(int i = 0; i < m; i++)
    {
        int p,q;//学号p,移动q 
        cin >> p >> q;
        int j = 0;
        while(i < m)
        {
            if(v[j]==p)
            {
                v.erase(v.begin()+j);//删除指定位置的学号
                v.insert(v.begin()+j+q,p);//用insert函数将指定学号插入到最终位置。
                break;
            }
            j++;
        }
    } 
    for(int i = 0; i < v.size(); i++)
    {
        cout << v[i] << " ";
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/12/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CCF考试——201703-2学生排队
  体育老师小明要将自己班上的学生按顺序排队。他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整。一次调整小明可能让一位同学出队,向前或者向后移动一段距离后再插入队列。   例如,下面给出了一组移动的例子,例子中学生的人数为8人。   0)初始队列中学生的学号依次为1, 2, 3, 4, 5, 6, 7, 8;   1)第一次调整,命令为“3号同学向后移动2”,表示3号同学出队,向后移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 5, 3, 6, 7, 8;   2)第二次调整,命令为“8号同学向前移动3”,表示8号同学出队,向前移动3名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 5, 8, 3, 6, 7;   3)第三次调整,命令为“3号同学向前移动2”,表示3号同学出队,向前移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 3, 5, 8, 6, 7。   小明记录了所有调整的过程,请问,最终从前向后所有学生的学号依次是多少?   请特别注意,上述移动过程中所涉及的号码指的是学号,而不是在队伍中的位置。在向后移动时,移动的距离不超过对应同学后面的人数,如果向后移动的距离正好等于对应同学后面的人数则该同学会移动到队列的最后面。在向前移动时,移动的距离不超过对应同学前面的人数,如果向前移动的距离正好等于对应同学前面的人数则该同学会移动到队列的最前面。
AI那点小事
2020/04/20
5720
【计算机本科补全计划】CCF计算机职业资格认证 2017-03 试题初试
正文之前 我在之前的文章中提到过,我的老师要求我的CCF 考试考个280分来打个底,(没错,我就是那个横跨考研、工作、保研三大领域的男人)相当于是测试下我的能力,所以虽然不知道近期有没有相关的考试,但是我还是开始准备。这种等级考试,当然就是从刷题开始了!!至于什么大纲,什么宝典,见鬼去吧~ 不信这玩意,题海战术从小用到大,骨子里都习惯了。当然还是直接怼题目来得爽了 ~ ~ 而且还可以实践自己的各种知识积淀,自己看书看一遍,简书写笔记写一遍,最后写题写一遍,考试然后再被轮一遍,这么下来还没有十足长进我就不信了
用户1687088
2018/05/07
1.5K0
【计算机本科补全计划】CCF计算机职业资格认证 2017-03 试题初试
C++ STL (标准模板库) 详细内容讲解
顺序容器有以下三种:可变长动态数组 vector、双端队列 deque、双向链表 list。
杨鹏伟
2020/09/11
2.1K0
一万五千字C++STL【容器】详解 (全网最详细)
一般大多数的题目都可以使用vector容器,除非有特定需求使用其他容器更加合理方便;
C语言与CPP编程
2023/09/06
3.1K0
一万五千字C++STL【容器】详解 (全网最详细)
数据结构实验报告二__单链表的基本操作__学生管理系统(单链表版)
程序的设计任务:定义一个包含学生信息(学号,姓名,成绩)的单链表,使其具有如下功能: (1)根据指定学生个数,逐个输入学生信息; (2)逐个显示学生表中所有学生的相关信息; (3)根据姓名进行查找,返回此学生的学号和成绩; (4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5)给定一个学生信息,插入到表中指定的位置; (6)删除指定位置的学生记录; (7)统计表中学生个数。 模块划分: (1)写第一个子函数input()创建链表完成输入学生信息操作; (2)写第二个子函数output()完成逐个显示学生表中所有学生的相关信息操作; (3)写第三个子函数findnum()完成根据姓名进行查找,返回此学生的学号和成绩操作; (4)写第四个子函数locationlookup()完成根据指定的位置可返回相应的学生信息(学号,姓名,成绩)操作; (5)写第五个子函数insert()完成给定一个学生信息,插入到表中指定的位置操作; (6)写第六个子函数remov()完成删除指定位置的学生记录操作; (7)写第七个子函数 Statistics()完成统计表中学生个数操作; (8)写第八个子函数menu()来调用以上函数进行可视化的操作; (9)写一个main()主函数,调用menu()函数来完成所有操作;
命运之光
2024/03/20
4260
数据结构实验报告二__单链表的基本操作__学生管理系统(单链表版)
数据结构实验报告—顺序表的基本操作—学生管理系统
程序的设计任务:定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1)根据指定学生个数,逐个输入学生信息; (2)逐个显示学生表中所有学生的相关信息; (3)根据姓名进行查找,返回此学生的学号和成绩; (4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5)给定一个学生信息,插入到表中指定的位置; (6)删除指定位置的学生记录; (7)统计表中学生个数。 模块划分: (1)写第一个子函数input()完成输入学生信息操作; (2)写第二个子函数output()完成逐个显示学生表中所有学生的相关信息操作; (3)写第三个子函数findelem()完成根据姓名进行查找,返回此学生的学号和成绩操作; (4)写第四个子函数findnum()完成根据指定的位置可返回相应的学生信息(学号,姓名,成绩)操作; (5)写第五个子函数insertlist()完成给定一个学生信息,插入到表中指定的位置操作; (6)写第六个子函数del()完成删除指定位置的学生记录操作; (7)写第七个子函数Statistics()完成统计表中学生个数操作; (8)写第八个子函数menu()来调用以上函数进行可视化的操作; (9)写一个main()主函数,调用menu()函数来完成所有操作;
命运之光
2024/03/20
6110
数据结构实验报告—顺序表的基本操作—学生管理系统
奖学金
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
5100
【实现报告】学生信息管理系统(顺序表)
(2) 程序要具有一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。
走在努力路上的自己
2024/04/02
3850
【实现报告】学生信息管理系统(顺序表)
程序员进阶之算法练习(三十九)Codeforces
正文 1.Drinks Choosing 题目链接 题目大意: 有n个学生,每个学生都有自己喜欢的饮料类型,用整数?1,?2,…,?? (1≤??≤?)表示,一共有k种饮料的类型。 现在老师要采
落影
2020/04/09
4680
「手撕算法」锁定大厂看这就可
那么数据结构中的结构定义是这个数据结构长什么样子,有些什么性质?结构的操作意思是这个结构可以支持什么操作,但是不管你怎么的操作,不能破坏了它的结构
我是程序员小贱
2020/09/18
5900
数据结构【第一篇】线性表之顺序表的实现与讲解
新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这种组织数据(同学)的方式我们可以称作线性表结构
BWH_Steven
2019/09/25
8920
数据结构【第一篇】线性表之顺序表的实现与讲解
《算法竞赛进阶指南》0x12 队列
队列的逻辑存储结构属于 “受限线性表”,其 “受限” 的部分是只能在线性表的一端执行插入在另一端执行删除操作
一只野生彩色铅笔
2022/10/31
6520
【算法学习】分枝限界法
关注那些不断已被他人成功应用的新思路。你的原创思想只应该应用在那些你正在研究的问题上。
短短的路走走停停
2019/11/19
1.3K0
【算法学习】分枝限界法
【实现报告】学生信息管理系统(链表实现)
(2) 程序要具有一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。
走在努力路上的自己
2024/04/02
5720
【实现报告】学生信息管理系统(链表实现)
杨校老师课堂之信息学奥赛结构体操作使用经典题集锦汇总
在一家企业中,员工信息的准确性和时效性是日常人事管理工作的关键。由于企业员工数量众多,手动统计与更新员工信息不仅耗费大量时间,还容易出现错误。作为企业的技术人员,你准备开发一个专门的信息管理系统来协助人事部门高效完成这项任务。
杨校
2025/02/23
940
杨校老师课堂之信息学奥赛结构体知识训练
现有N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在想知道这些同学中,有几对“旗鼓相当的对手”?同样一个人可能会和其他好几名同学结对。
杨校
2025/02/21
860
杨校老师课堂之信息学奥赛结构体知识训练
信奥赛-刷题笔记-队列篇-T2-P1996约瑟夫和P5661公交换乘
https://docs.qq.com/sheet/DSmJuVXR4RUNVWWhW?tab=BB08J2
IT从业者张某某
2025/05/12
590
信奥赛-刷题笔记-队列篇-T2-P1996约瑟夫和P5661公交换乘
基于链表实现的学生管理系统
定义一个包含学生信息(学号,姓名,性别,专业,语数外成绩,平均分,成绩排名)的链表,使其具有如下功能:
用户10604450
2024/03/15
1470
基于链表实现的学生管理系统
【Go语言刷题篇】Go从0到入门4:切片的高级用法、初级复习与Map入门学习
问题描述:学生们都排成了一队,有一个切片表示相应学生们的身高,现随机喊某个位置的人出队,返回出队后的这个切片。比如[2,3,4,5],索引为1的位置的出队,出队后切片为[2,4,5]
程序员洲洲
2024/06/07
1020
【Go语言刷题篇】Go从0到入门4:切片的高级用法、初级复习与Map入门学习
C语言 | 动图演示十大经典排序算法(含代码)
插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
混说Linux
2023/02/24
7620
C语言 | 动图演示十大经典排序算法(含代码)
推荐阅读
相关推荐
CCF考试——201703-2学生排队
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验