思路:

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

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. 019、MySQL取本季度开始时间和本季度结束时间

    SELECT QUARTER ( adddate( dy, ) ) QTR, date_add( dy, INTERVAL MONTH ) Q_start, adddate( dy, ) Q_end ...

  2. 吴裕雄--天生自然java开发常用类库学习笔记:Math与Random类

    public class MathDemo01{ public static void main(String args[]){ // Math类中的方法都是静态方法,直接使用“类.方法名称()”的形 ...

  3. C++ Socket WSAENOBUFS WSAoverlapped

    WSARecv的时候,投递的接收缓冲区的大小设置为0. 然后手动调用非阻塞recv从缓冲区接受数据,直到WSAEWOULDBLOCK,不然会有很多的buffer被锁住,当客户端的数量达到一定数目时,就 ...

  4. (转)让一个进程启动时Windbg自动Attach上去

    如何让一个进程启动时Windbg自动Attach上去 以IE为例:需要在注册表中创建一项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current ...

  5. NetWork--记一次Http和TLS抓包

    参考 前言 工具 wireshark IP 发送方IP: 150.236.224.39 服务IP: 10.210.164.20 消息 Http,Https消息使用org.apache.http.cli ...

  6. 小程序地图开发周边信息POI展示为列表

    ##首先附上效果图 在我前面的文章中我详述过如何使用百度地图API来开发小程序的地图,所以这里面就不说基础内容了. 直说如下: ##1.如何获取列表: //分类存储 makertap: functio ...

  7. Java关键字与标识符

    什么是关键字? Java语言赋予特定含义的单词被称为关键字,比如在HelloWorld中的class.public.static.void. 关键字的特点: 完全小写的字母. 在增强版的记事本当中(例 ...

  8. 《Python爬虫技术:深入理解原理、技术与开发》已经出版,送Python基础视频课程

    好消息,<Python爬虫技术:深入理解原理.技术与开发>已经出版!!!   JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送Python基础视频课程!J ...

  9. VUE- Cordova打包APP

    VUE- Cordova打包APP 现在使用vue开发的项目越来越多,使用vue开发的移动端打包就成了最大的问题.现在前端打包方案有好多种,但是综合来说,我比较喜欢用cordova来进行Android ...

  10. 留学生如何把控好Essay写作结构

    留学生在国内写过作文,但是对于essay写作到底了解多少呢?大家觉得essay写作太难是语言问题,但是大家要明白,老师对于内容的考察远重于对语言的考察.同学们的essay写作如果能做到言之有理,自圆其 ...