CCF201703-2 学生排队 java(100分)
| 试题编号: | 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,所有移动均合法。 | 
问题描述:(参见上文)
问题分析:这是一个模拟题,关键在于数据表示。
package test;
import java.util.Scanner;
public class b_01 {
    public  static void main(String[] args){
        int num;
        Scanner in=new Scanner(System.in);
        num=in.nextInt();
        int line[]=new int[num+1];//使得下标从1开始使用
        for(int i=1;i<=num;i++){
        line[i]=i;
        }
        int time=in.nextInt();
        for(int j=0;j<time;j++){
            int sno=in.nextInt();
            int mov=in.nextInt();
            int snoLoc=0;
            for(int e=1;e<=num;e++){
                if(line[e]==sno)snoLoc=e;
            }
            if(mov>0){
                for(int k=1;k<=mov;k++){
                    line[snoLoc]=line[snoLoc+1];
                    snoLoc++;
                }
                line[snoLoc]=sno;
            }
            else if(mov<0){
            for(int k=1;k<=(mov*-1);k++){
                line[snoLoc]=line[snoLoc-1];
                snoLoc--;
            }
            line[snoLoc]=sno;
            }else{
                continue;
            }
        }
        for(int a=1;a<=num;a++){
            System.out.print(line[a]+" ");
        }
    }
}
CCF201703-2 学生排队 java(100分)的更多相关文章
- 201703-2  学生排队 Java
		思路: 将需要移动的学生remove后再add 题目中说向前向后移动不会超过人数,也就是不会出现隔着的情况.所以不会越界. import java.util.ArrayList; import jav ... 
- CCF|学生排队|Java
		import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Sc ... 
- PAT 乙级 1038.统计同成绩学生 C++/Java
		题目来源 本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第 1 行给出不超过 1 的正整数 N,即学生总人数.随后一行给出 N 名学生的百分制整数成绩,中间以空 ... 
- ssi整合报错org.apache.struts2.convention.ConventionsServiceImpl.determineResultPath(ConventionsServiceImpl.java:100)
		java.lang.RuntimeException: Invalid action class configuration that references an unknown class name ... 
- 单服务员排队模拟100天matlab实现
		大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang %单服务员排队模型模拟100天 clear clc day = 100 ;s = zeros(1, ... 
- CCF CSP 201703-2 学生排队
		博客中的文章均为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-2 学生排队 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排, ... 
- CCF 2017-03-2 学生排队
		CCF 2017-03-2 学生排队 题目 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整.一次调整小明可能让一位同学 ... 
- CCF201409-2 画图 java(100分)
		试题编号: 201409-2 试题名称: 画图 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐 ... 
- CCF201509-2 日期计算 java(100分)
		试题编号: 201509-2 试题名称: 日期计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有2 ... 
随机推荐
- flash、flex builder、flash builder、 air的关系
			flash VS flex builder flash被adobe收购的时候是flash8,已经可以AS2面向对象了. 而被adobe收购后,adobe准备把flash打造成一个开发工具.就比如JBU ... 
- obs nginx-rtmp-module搭建流媒体服务器实现直播 ding
			接下来我就简单跟大家介绍一下利用nginx来搭建流媒体服务器. 我选择的是腾讯云服务器 1.下载nginx-rtmp-module: nginx-rtmp-module的官方github地址:http ... 
- cURL模拟HTTP请求(支持HTTPS)
			function setHttpRequest($url,$headers,$params=array(),$method="GET") { $ci = curl_init(); ... 
- Wannafly挑战赛29A御坂美琴
			传送门 这套题很有意思2333 蠢了--首先先判总共加起来等不等于\(n\),不是的话就不行 然后dfs记录\(n\)不断分下去能分成哪些数,用map记录一下,判断是否所有数都能被分出来就是了 //m ... 
- 洛谷P3698 [CQOI2017]小Q的棋盘
			传送门 考虑一个贪心,先在根节点周围转一圈,然后再往下走最长链肯定是最优的 然后设最长链的长度为$d$,如果$m\leq d$,那么答案为$m+1$ 否则的话还剩下$m-d+1$步,又得保证能走回来, ... 
- echarts-gl 3D柱状图保存为图片,打印
			echarts-gl生成的立体柱状图生成图片是平面的,但是需求是3D图并且可以打印,我们的思路是先转成图片,然后再打印,代码如下: 生成3D图 <td>图表分析</td> &l ... 
- Springboot拦截器线上代码失效
			今天想测试下线上代码,能否正常的执行未登录的拦截.所以把拦截器的代码给开放出来,但是没想到线上代码addInerceptors(InterceptorRegistry registry) 这个方法一直 ... 
- Linux学习笔记之Linux系统启动过程
			Linux系统的启动过程可以分为五个阶段: 内核的引导 运行init 系统初始化 建立终端 用户登录系统 1.内核引导: 当计算机打开电源后,首先进行BIOS开机自检,按照BIOS中设置的启动设备(一 ... 
- AGC16E Poor Turkeys
			输入样例: 10 10 8 9 2 8 4 6 4 9 7 8 2 8 1 8 3 4 3 4 2 7 输出样例#6: 5 话说这题虽然不是很OI但是确实挺锻炼思维的 一开始以为是用并查集之类的东西维 ... 
- [Usaco2018 Open]Talent Show
			Description FarmerJohn要带着他的N头奶牛,方便起见编号为1-N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重量为wi,才艺水平为ti,两者都是整数.在到达时,Farmer ... 
