思路:

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

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();//N把钥匙
int K = sc.nextInt();//K次操作
int key[] = new int[N];
for(int i=0;i<N;i++) {//给钥匙编号
key[i] = i+1;
} //存储上课信息
int mes[][] = new int[K][3]; //找出最晚结束的课
int max = 0;
for(int i=0;i<K;i++) {
mes[i][0] = sc.nextInt();//钥匙编号
mes[i][1] = sc.nextInt();//上课开始
mes[i][2] = sc.nextInt() + mes[i][1];//下课结束时刻
if(mes[i][2] > max) {
max = mes[i][2];
}
}
//按上课开始时间排序,选择排序
for(int i=0;i<K;i++) {
int min = i;
for(int j=i+1;j<K;j++) {
if(mes[j][1] < mes[i][1]) {
min = j;
}
}
if(min != i) {//把最小的放到排好序的最后
int temp[] = mes[min];
mes[min] = mes[i];
mes[i] = temp;
}
} //拿钥匙,到最后一节课结束
for(int i=1;i<=max;i++) {
//每一时刻应还钥匙的集合
List<Integer> back = new ArrayList<Integer>();
for(int j=0;j<K;j++) {
if(mes[j][2] == i) {
back.add(mes[j][0]);
}
}
Collections.sort(back);//钥匙从小到大排序
//先全部还完钥匙
for(int j=0;j<back.size();j++) {
for(int k=0;k<N;k++) {
if(key[k] == 0) {
key[k] = back.get(j);
break;
}
}
} //借钥匙
for(int j=0;j<K;j++) {
if(mes[j][1] == i) {
for(int k=0;k<N;k++) {
if(key[k] == mes[j][0]) {
key[k] = 0;
}
}
}
}
} sc.close();
//打印
for(int i=0;i<N;i++) {
System.out.print(key[i] + " ");
}
}
}

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. 7.5 Varnish VCL的变量和应用片段

  2. python基础数据类型--集合(set)

    python基础数据类型--集合(set) 集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合 集合中的三个特征 1.确定性(元素必须死可hash) 2.互异性(去重) 3.无序性(集合中的 ...

  3. Java8系列 (四) 静态方法和默认方法(转载)

    静态方法和默认方法 我们可以在 Comparator 接口的源码中, 看到大量类似下面这样的方法声明 //default关键字修饰的默认方法 default Comparator<T> t ...

  4. 机器学习(ML)一之 Linear Regression

    一.线性回归 1.模型 2.损失函数 3.优化函数-梯度下降 #!/usr/bin/env python # coding: utf-8 import torch import time # init ...

  5. python面试题整理(二)

    1.进程,线程,协程定义,有什么区别 进程是操作系统分配资源的最小单位,一个进程对应一块CPU 线程是进程中的某一个控制单元,是CPU调度的最小单元,线程之间相互独立,进程结束线程也会结束,一个进程至 ...

  6. 【Cantor表】蒟蒻题解

    原题:传送门 (上图摘自网站OpenJudge - NOI题库2.1 Cantor表) 本蒟蒻的题解,让大神们见笑了! 首先,进行找规律. 大家可以发现: 1.当分子是一的时候,且分子和分母的和是偶数 ...

  7. Python 中使用动态创建类属性的机制实现接口之后的依赖

    我们在自动化测试中经常会需要关联用例处理,需要动态类属性: 推荐使用第二种方法: 创建:setattr() 获取:getattr() 两种,如何创建 类属性 loan_id # 第一种,创建 # 类名 ...

  8. Lombok认知

    Lombok的简介 Lombok是一款Java开发插件,公司项目到处使用,整体效果很棒,代码更干净.Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型 ...

  9. 【转载】webdriver 自动化测试如何定位到动态变化ID的iframe框内

    大家知道,在自动化测试脚本编写过程中,如果页面上跳出一个iframe框时,我们是定位不到框内内容的,可以通过 driver.findElement(By.id("")); driv ...

  10. input防抖动

    input及时搜索,输入一个字符就去处理请求数据.但是还没有输入完就开始频繁请求,进行处理 <body> <input id="put"/> </bo ...