试题编号: 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,所有移动均合法。

关键词:nosaying

 1 #include<iostream>
 2 #include<map>
 3 using namespace std;
 4 int main(){
 5     freopen("in2.txt","r",stdin);
 6     int gn = 0;
 7     cin >> gn;
 8     map<int,int> ma;
 9     for(int i = 0;i<gn;i++){
10         ma[i+1] = i+1;
11     }
12     int ga = 0;
13     cin >> ga;
14     for(int i = 0;i<ga;i++){
15         int bufin = 0;
16         int bufgo = 0;
17         cin >> bufin >> bufgo;
18         ma[bufin] += bufgo;
19         if(bufgo > 0){
20             for(map<int,int>::iterator itm=ma.begin();itm!=ma.end();itm++){
21                 if(
22                     itm->second >= ma[bufin]-bufgo
23                     &&
24                     itm->second <= ma[bufin]
25                     &&
26                     itm->first != bufin
27                     ){
28                     itm->second--;
29                 }
30             }
31         }
32         else{
33             for(map<int,int>::iterator itm = ma.begin();itm!=ma.end();itm++){
34                 if(
35                     itm->second >= ma[bufin]
36                     &&
37                     itm->second <= ma[bufin]-bufgo
38                     &&
39                     itm->first != bufin
40                     ){
41                     itm->second++;
42                 }
43             }
44         }
45     }
46     for(int i = 0;i<gn;i++){
47         for(map<int,int>::iterator itm = ma.begin();itm!=ma.end();itm++){
48             if(itm->second == i+1){
49                 cout << itm->first << ' ';
50                 break;
51             }
52         }
53     }
54     return 0;
55 }

转载于:https://www.cnblogs.com/ywsswy/p/7767809.html

CCF 201703-2 学生排队相关推荐

  1. 计算机ccf试题答案,【计算机本科补全计划】CCF 2017-03 试题初试

    正文之前 我在之前的文章中提到过,我的老师要求我的CCF 考试考个280分来打个底,(没错,我就是那个横跨考研.工作.保研三大领域的男人)相当于是测试下我的能力,所以虽然不知道近期有没有相关的考试,但 ...

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

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

  3. CCF201703-2 学生排队

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

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

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

  5. 闽南师范大学计算机科学学院副书记,CCF闽南师范大学学生分会完成换届

    CCF闽南师范大学学生分会换届选举会议于2020年4月25日在线上举行,CCF闽南师范大学学生分会执行委员会全体成员以及分会的100多位学生会员参加了本次会议. 根据<CCF学生分会换届选举流程 ...

  6. java利用队列实现一个学生排队买票功能

    1.利用队列实现一个学生排队买票功能 1.定义一个学生类Student,包括学号No.姓名Name.性别Gender.年龄Age等信息 2.定义一个队列类Queue,用于将学生进行队列排序 3.可以从 ...

  7. CCF 2017-3-2 学生排队

    样例输入 8 3 3 2 8 -3 3 -2 样例输出 1 2 4 3 5 8 6 7 思路:移动过程中,涉及到元素在中间位置的插入和删除,list容器是最佳选择:先遍历整个链表找到要移动的元素的位置 ...

  8. 201703-2学生排队

    问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整.一次调整小明可能让一位同学出队,向前或者向后移动一段距离后再插入队列. ...

  9. ccf-csp #201703-2 学生排队

    题目链接:http://118.190.20.162/view.page?gpid=T56 题目分析 一开始看到题目描述以为是一道有点意思的算法题,看完数据范围1 ≤ n ≤ 1000,1 ≤ m ≤ ...

最新文章

  1. 「biáng biáng 面」马上可以打出来了!Unicode发布13.0版本,收录4939个生僻字
  2. DevExpress的TreeList实现自定义右键菜单打开文件选择对话框
  3. oracle 12c dg新特性,Oracle 12c DG新特性---一键switchover
  4. 51nod1836-战忽局的手段【期望dp,矩阵乘法】
  5. C#获取存储过程的 Return返回值和Output输出参数值
  6. Java Server Page
  7. EBS 报表输出PDF时中文乱码
  8. 小米MIXAlpha将首发1亿像素传感器:1/1.33英寸大底业内无敌
  9. halcon深度学习
  10. com词根词缀_【单词杂谈】推荐几个学习英语词根词缀的网站,建议收藏!
  11. 猜数字 很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。 每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。
  12. 1linux 课程引入
  13. 必应(Bing)的站内搜索 site:<域名> <搜索内容>
  14. 基因组+转录组助力油菜种子油含量自然变异的遗传研究
  15. 怎样计算两个时间之间的间隔
  16. RTMP直播到FMS中的AAC音频直播
  17. 赋值运算符与逗号运算符
  18. HashMap遍历和使用
  19. linux内核内存管理slub
  20. java爬虫利器Jsoup的使用

热门文章

  1. java堆排序解决topk问题,详解堆排序解决TopK问题
  2. stft isar成像 matlab,基于STFT和FRFT的运动目标雷达三维成像方法与流程
  3. idea在创建类时在File Header中加入昵称和时间等
  4. opencv配置原理
  5. c3074 无法使用带圆括号的_地埋警示带预防挖掘 石油管道警示带保护管道安全...
  6. apicloud入门学习笔记1:简单介绍
  7. kafka应用场景Kafka VS Flume
  8. 赤虹JSON模块 v1.0 麻雀虽小, 五脏俱全
  9. JavaScript的函数声明与函数表达式的区别
  10. web command line : http://yubnub.org/