201709-2 公共钥匙盒 Java

思路:
按上课开始时间排一下序,一个时刻一个时刻判断要不要还钥匙,要不要借钥匙
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的更多相关文章
- CCF|公共钥匙盒|Java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = ...
- CCF 201709-2公共钥匙盒
问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...
- CCF201709-2公共钥匙盒改进版
问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...
- csp公共钥匙盒
1.公共钥匙盒 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥 ...
- CCF CSP 201709-2 公共钥匙盒
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-2 公共钥匙盒 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须 ...
- ccf-201709-2 公共钥匙盒
问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...
- CCF 2017-09-2 公共钥匙盒
CCF 2017-09-2 公共钥匙盒 题目 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室 ...
- 公共钥匙盒(CCF)【模拟】
问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...
- CCF 2017 09-02 公共钥匙盒
CCF 2017 09-02 公共钥匙盒 1.用快速排序函数结合排序规则函数来给取放排序. 2.vector数组的强大功能. #include<iostream> #include< ...
随机推荐
- 011、MySQL取14天前Unix时间戳
#取14天前时间戳 SELECT unix_timestamp( DATE_SUB( curdate( ), INTERVAL DAY ) ); 效果如下: 不忘初心,如果您认为这篇文章有价值,认同作 ...
- angularJS 服务
- mysql8 安装&问题解决
1.下载:https://dev.mysql.com/downloads/mysql/ 2.安装 1).设置环境变量 MYSQL_HOME D:\env\j2ee\mysql\mysql-8.0.19 ...
- Window Server 2019 配置篇(6)- 利用组策略实现域内自动安装软件
上次我们建立了WSUS实现了更新管理,那么现在我们需要的是让集群内的客户机(之后会建立在hyper-v集群上)和服务器都能装上三个软件 1. Microsoft Team 2. Notepad++ 3 ...
- Gym - 101190F Foreign Postcards (期望dp)
题意:有n张标有“C”或“F”的卡片. 1.随机取前k张(1<=k<=n) 2.若这k张的第一张为“C”,则不翻转,否则,全部翻转这k张. 3.然后处理剩下的n-k张 4.重复步骤1~3直 ...
- 官网英文版学习——RabbitMQ学习笔记(六)Routing
有选择的接收消息. 上一节我们使用的是fanout exchange来实现消息的发布/订阅模式,这并没有给我们带来多大的灵活性——它只能够让人盲目地进行广播.而本节我们采用direct类型的交换器来实 ...
- 12.Python的高级语法和用法
# from enum import Enum # 枚举 # class VIP(Enum): # YELLOW = # YELLOW_ALIAS = # 别名 # GREEN = # BLACK = ...
- Python 中使用 ddt 来进行数据驱动,批量执行用例,修改ddt代码
1. 什么是数据驱动? 使用数据驱动有什么好处? 用例执行是靠数据来驱动的,每条测试用例除了测试数据不一样意外,所有的用例代码都是一样的,为了使用例批量执行,我们会使用数据驱动的思想来批量执行测试用例 ...
- 移动端触屏click点击事件延迟问题,以及tap的解决方案
在移动端 触屏click事件虽然也会响应,但是总感觉是有延迟,一直听说click事件在手机上有200~300毫秒的延迟问题,亲自测了一下,在pc端模拟手机的话是测不出来的,但是用手机测试时发现延迟非常 ...
- Oracle SQL语句记录
1.oracel 查看表空间使用情况. ) AS free_space, tablespace_name FROM dba_free_space GROUP BY tablespace_name; ) ...