问题描述
试题编号: 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,所有移动均合法。
  满分代码:

#include<iostream>
#include<cmath>
using namespace std;
const int N=1005;
struct op
{int num;int dire;  // 方向direction
} ;
struct pos
{int stuNum;int curP;  //学号为stuNum的学生当前的位置
} ;
void  move(int * now,int dire,int curP)               //数组在函数中可以直接永久改变它的元素的值,不用再次返回了
{int tmp=now[curP];if(dire>0){for(int i=curP;i<curP+dire;i++){now[i]=now[i+1];}now[ curP+dire]= tmp;}else if(dire<0){int moveD=abs(dire);for(int i=curP;i>curP-moveD;i--){now[i]=now[i-1];}now[ curP-moveD]= tmp;}}
int main()
{int n,m;cin>>n>>m;pos a[N];int b[N];  //辅助存储每次变换后的队列编号序列for(int i=1;i<=n;i++){a[i].stuNum=i;a[i].curP=i;b[i]=i;}op oper[N] ;for(int i=1;i<=m;i++){cin>> oper[i].num>>oper[i].dire;int tmpF;for(int j=1;j<=n;j++){if(b[j]==oper[i].num){tmpF=j;}}move(b,oper[i].dire,tmpF)  ;}for(int i=1;i<=n;i++)cout<<b[i]<<" ";cout<<endl;return 0;}

代码里面用一个函数move模拟了对队列进行一次变换的过程,注意先保存要出列再入列的元素的值,然后移动其他元素,最后把保存的tmp值放在入列后的新位置上,防止其他元素将它原先的值覆盖掉。

CCF-CSP 201703-2 试题名称: 学生排队(满分代码)相关推荐

  1. CCF CSP 编程题目和解答-----试题名称:炉石传说 -------201609-3

    问题描述 试题编号: 201609-3 试题名称: 炉石传说 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 <炉石传说:魔兽英雄传>(Hearthstone: H ...

  2. CCF 201703-2 学生排队

    试题编号: 201703-2 试题名称: 学生排队 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排 ...

  3. CCF CSP 历年试题题解

      第一题 第二题 第三题 第四题 第五题 第15次(2018.12) 小明上学 小明放学 CIDR合并 数据中心   第14次(2018.09) 卖菜 买菜 元素选择器 再卖菜   第13次(201 ...

  4. CCF CSP认证菜鸟刷题日志

    CCF CSP菜鸟刷题日志(c/c++) 本萌新写给自己看的,要是有大佬路过,请多多指教orz 立个flag:每日一更,至201903 9月15ccf csp,冲鸭! 今天(2019.8.18)起每天 ...

  5. CCF —— CSP认证

    1.认证知识要求: 考试内容主要覆盖大学计算机专业所学习的程序设计.数据结构以及算法,以及相关的数学基础知识.包括但不限于: (1)程序设计基础 逻辑与数学运算,分支循环,过程调用(递归),字符串操作 ...

  6. 计算机能力挑战赛_蓝桥杯、PAT、CCF CSP、团体程序设计天梯赛、传智杯、计算机能力挑战赛、软考等大学生编程比赛/考试介绍...

    介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛). 编程入门书籍推荐<算法笔记>,内容详细易懂,对新手非常友好,描述语言为C ...

  7. CCF201703-2 学生排队

    问题描述: 试题编号: 201703-2 试题名称: 学生排队 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小 ...

  8. CCF201703-2 学生排队(100分)

    试题编号: 201703-2 试题名称: 学生排队 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排 ...

  9. 参加CCF CSP认证者须知

    发布单位:中国计算机学会      发布时间:2014-11-11 15:06    凡有意参加CCF CSP认证者,请在cspro.org网站上注册.报名.缴费.打印准考证,参加认证后可以在网站查询 ...

最新文章

  1. hashmap转红黑树的阈值为8_面试必问的HashMap,一次彻底帮你搞定HashMap源码
  2. loam_livox
  3. 《大话设计模式》学习心得系列(一)
  4. java.util.concurrent 包下面的所有类
  5. 何亚明:Facebook的工具文化和多媒体QoE
  6. 一个高质量的程序应具备哪些条件?_如何开好一个精品店?需要具备哪些条件?...
  7. 【转】R函数-diag()函数
  8. bitset与取数凑数类问题
  9. python大数据开发平台_python示例
  10. linux装go环境脚本,linux中用shell快速安装配置Go语言的开发环境
  11. 360电脑网速怎么测试软件,360怎么测试网速,360如何测试网速
  12. SMT常见元器件贴片封装名称识别
  13. sub1G-CC1310的应用开发之入门
  14. 盘点数据分析中常用的图表类型
  15. 八图片在线图片设置付费
  16. 代码是如何控制硬件的
  17. HTML+CSS实现拼多多官网首页
  18. 信捷服务器Z相信号,USR-G781连接信捷PLC ,使用透传云服务器进行远程上传程序
  19. 装好虚拟机后,打开系统有黑屏的一些解决策略
  20. 3D建模教程:3DMAX打造下雨的场景!

热门文章

  1. JS标签的各种事件的举例
  2. titanium开发教程-04-11其他属性和方法
  3. ASP导出EXCEL乱码?试试这个
  4. ASP.NET编程中的十大技巧【转载】
  5. 神经网络与机器学习 笔记—核方法和径向基函数网络(下)
  6. hdu4370 比较抽象的最短路
  7. hdu4496并查集的删边操作
  8. C语言经典例8-输出乘法口诀表
  9. 【开发环境】010 Editor 工具 ( 工具下载 | 二进制文件分析模板模板安装 | 快捷键查看与设置 )
  10. 【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 使用 IDA 打开 arm 动态库文件 | 切换 IDA 中汇编代码显示样式 )