思路:

按上课开始时间排一下序,一个时刻一个时刻判断要不要还钥匙,要不要借钥匙

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. import java.util.Scanner;
  5. public class Main {
  6. public static void main(String[] args) {
  7. Scanner sc = new Scanner(System.in);
  8. int N = sc.nextInt();//N把钥匙
  9. int K = sc.nextInt();//K次操作
  10. int key[] = new int[N];
  11. for(int i=0;i<N;i++) {//给钥匙编号
  12. key[i] = i+1;
  13. }
  14. //存储上课信息
  15. int mes[][] = new int[K][3];
  16. //找出最晚结束的课
  17. int max = 0;
  18. for(int i=0;i<K;i++) {
  19. mes[i][0] = sc.nextInt();//钥匙编号
  20. mes[i][1] = sc.nextInt();//上课开始
  21. mes[i][2] = sc.nextInt() + mes[i][1];//下课结束时刻
  22. if(mes[i][2] > max) {
  23. max = mes[i][2];
  24. }
  25. }
  26. //按上课开始时间排序,选择排序
  27. for(int i=0;i<K;i++) {
  28. int min = i;
  29. for(int j=i+1;j<K;j++) {
  30. if(mes[j][1] < mes[i][1]) {
  31. min = j;
  32. }
  33. }
  34. if(min != i) {//把最小的放到排好序的最后
  35. int temp[] = mes[min];
  36. mes[min] = mes[i];
  37. mes[i] = temp;
  38. }
  39. }
  40. //拿钥匙,到最后一节课结束
  41. for(int i=1;i<=max;i++) {
  42. //每一时刻应还钥匙的集合
  43. List<Integer> back = new ArrayList<Integer>();
  44. for(int j=0;j<K;j++) {
  45. if(mes[j][2] == i) {
  46. back.add(mes[j][0]);
  47. }
  48. }
  49. Collections.sort(back);//钥匙从小到大排序
  50. //先全部还完钥匙
  51. for(int j=0;j<back.size();j++) {
  52. for(int k=0;k<N;k++) {
  53. if(key[k] == 0) {
  54. key[k] = back.get(j);
  55. break;
  56. }
  57. }
  58. }
  59. //借钥匙
  60. for(int j=0;j<K;j++) {
  61. if(mes[j][1] == i) {
  62. for(int k=0;k<N;k++) {
  63. if(key[k] == mes[j][0]) {
  64. key[k] = 0;
  65. }
  66. }
  67. }
  68. }
  69. }
  70. sc.close();
  71. //打印
  72. for(int i=0;i<N;i++) {
  73. System.out.print(key[i] + " ");
  74. }
  75. }
  76. }

201709-2 公共钥匙盒 Java的更多相关文章

  1. CCF|公共钥匙盒|Java

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = ...

  2. CCF 201709-2公共钥匙盒

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

  3. CCF201709-2公共钥匙盒改进版

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

  4. csp公共钥匙盒

    1.公共钥匙盒 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥 ...

  5. CCF CSP 201709-2 公共钥匙盒

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-2 公共钥匙盒 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须 ...

  6. ccf-201709-2 公共钥匙盒

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

  7. CCF 2017-09-2 公共钥匙盒

    CCF 2017-09-2 公共钥匙盒 题目 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室 ...

  8. 公共钥匙盒(CCF)【模拟】

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

  9. CCF 2017 09-02 公共钥匙盒

     CCF 2017 09-02 公共钥匙盒 1.用快速排序函数结合排序规则函数来给取放排序. 2.vector数组的强大功能. #include<iostream> #include< ...

随机推荐

  1. JS中的Map对象

    1,js创建map对象 var map = new Map(); 2.将键值对放入map对象 map.set("key",value) map.set("key1&quo ...

  2. Django(十二)视图--利用jquery从后台发送ajax请求并处理、ajax登录案例

    一.Ajax基本概念 [参考]:https://www.runoob.com/jquery/jquery-ajax-intro.html 异步的javascript.在不全部加载某一个页面部的情况下, ...

  3. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. LCD驱动详解

    参考文档:<液晶屏.pdf><S3C2440用户手册><JZ2440-V3原理图>   frame buffer: 显存,用于存放LCD显示数据:frame buf ...

  5. usb摄像头驱动的移植

    相关软件下载地址:http://pan.baidu.com/s/16yo8Y 1.使用摄像头型号ov9650 ①修改.配置内核 1.修改vi drivers/i2c/busses/Kconfig (参 ...

  6. maven手动安装ojdbc6.jar包到本地仓库

    需要jar文件 ojdbc6.jar jar下载地址1   下载地址2 本地执行: mvn install:install-file -Dfile=D:/ojdbc6.jar -DgroupId=co ...

  7. 开源DDD设计模式框架YMNNetCoreFrameWork第6篇-.net Core Logging和Nlog结合

    源码地址:https://github.com/topgunymn/YMNNetCoreFrameWork 遇到的坑:使用了Nlog以后,.NETcore自带的日志等级不起作用,只有nlog配置配置文 ...

  8. 064-PHP函数中局部变量在函数外不可使用

    <?php function print_num(){ //定义函数 $x=6; //在函数中定义变量 } print_num(); //调用函数 echo $x; ?>

  9. [NOIP2017] T4 跳房子 DP+二分

    Description 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一.跳房子的游戏规则如下:  在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一条直线 ...

  10. 干货分享:学术Essay写作流程及写作技巧详解

    Academic essay是指留学生作业中的一种,其范围非常广泛,可以是任何一种话题.而学术essay主要是指其中比较正式的.客观的话题,有明确的研究目的与研究对象.例如“Research on t ...