OJ-0708

示例1

1
App1 1 09:00 10:00
09:30
App1

示例2

2
App1 1 09:00 11:00
App2 2 09:10 09:30
09:20
App2

示例3

2
App1 1 09:00 11:00
App2 2 09:10 09:30
09:50
NA

示例4

4
App1 1 09:00 10:00
App2 2 10:10 11:00
App3 4 11:10 12:30
App4 5 10:30 11:30
11:20
App4

示例5

4
App1 1 09:00 10:00
App2 2 10:10 11:00
App3 4 11:10 12:30
App4 3 10:30 11:30
11:20
App3

方式一:

public class APP1 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int N = in.nextInt();in.nextLine();List<App> list = new ArrayList<>();for (int i = 0; i < N; i++) {App app = new App(in.next(), in.nextInt(), timeToMin(in.next()), timeToMin(in.next()), -1);list.add(app);}List<App> register = new ArrayList<>();for (int i = 0; i < list.size(); i++) {if (i == 0) {App app = list.get(i);app.index = i;register.add(app);continue;}App current = list.get(i);current.index = i;// 将注册app和已注册app比较,时间冲突的将index放入set集合中Set<Integer> set = new HashSet<>();for (int j = current.start; j < current.end; j++) {for (App a : register) {if (j >= a.start && j < a.end) {set.add(a.index);}}}boolean flag = false;// 取出时间冲突的index 和 已注册的比较等级,只要有等级比将注册的高就注册失败for (int index : set) {if (register.get(index).level > current.level) {// 注册失败flag = true;break;}}// 注册成功if (!flag) {for (int index : set) {App app = list.get(index);// App app1 = new App(app.name, app.level, app.start, app.end, app.index);register.remove(app);}register.add(current);}}// 获取输入的时间int time = timeToMin(in.next());App result = null;for (App a : register) {if (a.start <= time && time < a.end) {result = a;}}if (result == null) {System.out.println("NA");} else {System.out.println(result.name);}}// 时间转换为分钟public static int timeToMin(String str) {String[] strArr = str.split(":");int hour = Integer.parseInt(strArr[0]);int min = Integer.parseInt(strArr[1]);return hour * 60 + min;}static class App {private String name;private int level;private int start;private int end;private int index;public App(String name, int level, int start, int end, int index) {this.name = name;this.level = level;this.start = start;this.end = end;this.index = index;}@Overridepublic boolean equals(Object obj) {if (null == obj) return false;App app = (App) obj;return name.equals(app.name) && level == app.level &&start == app.start && end == app.end && index == app.index;}@Overridepublic int hashCode() {return Objects.hash(name, level, start, end, index);}}
}

方式二

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Scanner;
import java.util.Set;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int N;N = in.nextInt();in.nextLine();List<App> list = new ArrayList<>(N);for (int i = 0; i < N; i++) {App app = new App(in.next(), Integer.parseInt(in.next()), timeToMin(in.next()), timeToMin(in.next()));if (app.start <= app.end) {list.add(app);}}// 已注册app列表List<Duration> dlist = new ArrayList<>();for (int i = 0; i < list.size(); i++) {if (i == 0) {App app = list.get(i);Duration duration = new Duration(app.name, app.start, app.end, i);dlist.add(duration);continue;}App current = list.get(i);Set<Integer> set = new HashSet<>();// 遍历将要注册app的开始时间-结束时间,依次比较已注册app的开始时间,结束时间//  如果将注册app的开始时间 >= 已注册app的开始时间 && 将注册app的开始时间 < 已注册app的结束时间 ,同时增大将注册app的开始时间到结束时间//  (只要符合上述条件,说明将注册app的时间与已注册app的时间冲突了,此时将此已注册app的id记录下来)for (int j = current.start; j < current.end; j++) {for (Duration d : dlist) {if (j >= d.start && j < d.end) {set.add(d.index);}}}boolean isDown = false;// 遍历记录下来的id,和已注册app的等级比较,只要存在将注册app的id大于已注册app的id,则set中的id是都要从已注册中删除的for (int index : set) {if (list.get(index).level > current.level) {isDown = true;}}if (isDown) {} else {for (int index : set) {App app = list.get(index);Duration duration = new Duration(app.name, app.start, app.end, index);dlist.remove(duration);}Duration duration = new Duration(current.name, current.start, current.end, i);dlist.add(duration);}}String time = in.next();int min = timeToMin(time);Duration result = null;for (Duration d : dlist) {if (min >= d.start && min < d.end) {result = d;}}if (result == null) {System.out.print("NA");} else {System.out.print(result.name);}}static public int timeToMin(String t) {String[] s = t.split(":");int hour = Integer.parseInt(s[0]);int min = Integer.parseInt(s[1]);return hour * 60 + min;}static class App {String name;int level;int start;int end;public App(String name, int level, int start, int end) {this.name = name;this.level = level;this.start = start;this.end = end;}}static class Duration {String name;int start;int end;int index;public Duration(String name, int start, int end, int index) {this.name = name;this.start = start;this.end = end;this.index = index;}@Overridepublic boolean equals(Object o) {if (o == null) return false;Duration duration = (Duration) o;return this.name.equals(duration.name) && this.start == duration.start&& this.end == duration.end && this.index == duration.index;}@Overridepublic int hashCode() {return Objects.hash(this.name, this.start, this.end, this.index);}}
}

https://blog.csdn.net/weixin_52908342/article/details/135338594

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@Builder注解详解:巧妙避开常见的陷阱

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 Builder注解详解&#xff1a;巧妙避开常见的陷阱 前言1. Builder的基本使用使用示例示例类创建对…

极客时间:使用Autogen Builder和本地LLM(Microsoft Phi3模型)在Mac上创建本地AI代理

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

pointpillar 代码报错

错误&#xff1a; Traceback (most recent call last): File "/home/gaoithe/project/python/code/CenterPoint/./tools/dist_test.py", line 415, in <module> main() File "/home/gaoithe/project/python/code/CenterPoint/./tools/dist_test.p…

运维系列.Nginx:自定义错误页面

运维系列 Nginx&#xff1a;自定义错误页面 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/…

本地部署秘塔开源搜索引擎

秘塔AI搜索是由秘塔科技于2024年初推出的一款新型搜索引擎&#xff0c;被业界誉为“中国版的Perplexity”。秘塔科技成立于2018年4月&#xff0c;其核心团队包括CEO闵可锐、技术专家唐悦和首席运营官王益为等。秘塔AI搜索以其高效简洁的特点受到关注&#xff0c;其搜索结果直接…

LeetCode——第 405 场周赛

题目 找出加密后的字符串 给你一个字符串 s 和一个整数 k。请你使用以下算法加密字符串&#xff1a; 对于字符串 s 中的每个字符 c&#xff0c;用字符串中 c 后面的第 k 个字符替换 c&#xff08;以循环方式&#xff09;。 返回加密后的字符串。 示例 1&#xff1a; 输入&…

数据结构(其二)--线性表

1. 基本概念 线性表&#xff1a; &#xff08;1&#xff09;.其中的各个元素&#xff0c;数据类型相同。 &#xff08;2&#xff09;.元素之间&#xff0c;有次序。 &#xff08;3&#xff09;.都有表头元素和表尾元素。 &#xff08;4&#xff09;.除了表头表尾&#xff…

谷粒商城学习笔记-16-人人开源搭建后台管理系统

文章目录 一&#xff0c;克隆前/后端代码1&#xff0c;克隆前端工程renren-fast-value2&#xff0c;克隆后端工程renren-fast 二&#xff0c;集成后台管理系统的后端代码三&#xff0c;启动后台管理系统四&#xff0c;前端系统的安装和运行1&#xff0c;下载安装VSCode2&#x…

为什么KV Cache只需缓存K矩阵和V矩阵,无需缓存Q矩阵?

大家都知道大模型是通过语言序列预测下一个词的概率。假定{ x 1 x_1 x1​&#xff0c; x 2 x_2 x2​&#xff0c; x 3 x_3 x3​&#xff0c;…&#xff0c; x n − 1 x_{n-1} xn−1​}为已知序列&#xff0c;其中 x 1 x_1 x1​&#xff0c; x 2 x_2 x2​&#xff0c; x 3 x_3 x…

拓展中国剩余定理

题目链接 代码&#xff1a; /*扩展中国剩余定理的使用范围更广泛&#xff0c;不要求模数全部互质扩展中国剩余定理&#xff1a;两两合并同余方程&#xff0c;合并 n - 1 次之后&#xff0c;就能求解合并两个同余方程&#xff1a;x ≡ r1 (mod p1) --- x a*p1 r1x ≡ r2 (mo…

from transformers.modeling_utils import PreTrainedModel

from transformers.modeling_utils import PreTrainedModel 是用于导入 Hugging Face Transformers 库中的 PreTrainedModel 类。这个类是所有预训练模型的基类&#xff0c;提供了许多通用功能和方法&#xff0c;适用于不同类型的模型&#xff08;如BERT、GPT、Transformer-XL等…

STM32对数码管显示的控制

1、在项目开发过程中会遇到STM32控制的数码管显示应用&#xff0c;这里以四位共阴极数码管显示控制为例讲解&#xff1b;这里采用的控制芯片为STM32F103RCT6。 2、首先要确定数码管的段选的8个引脚连接的单片机的引脚是哪8个&#xff0c;然后确认位选的4个引脚连接的单片机的4…

ChatGPT:fetch/xhr是什么意思

ChatGPT&#xff1a;fetch/xhr是什么意思 fetch 和 XHR&#xff08;XMLHttpRequest&#xff09;是两种用于在客户端与服务器之间进行异步通信的方法。在网页开发中&#xff0c;它们用于从服务器获取数据或将数据发送到服务器&#xff0c;而不需要刷新整个页面。 fetch fetch …

平滑切换/过渡多个控制器的方法

控制系统理论 在控制系统领域&#xff0c;平滑切换多个控制器通常指的是在保持系统稳定性和性能的同时&#xff0c;实现控制器之间的无缝切换。 输出抖动抑制方法&#xff1a;通过设计包含积分作用的控制器实现跟踪控制&#xff0c;并通过设计补偿器来减小控制输入信号在切换…

京东技术团队撰写的整整986页《漫画学Python》到底有什么魅力?

这是一本Python入门书。无论您是想学习编程的小学生&#xff0c;还是想参加计算机竞赛的中学生&#xff0c;抑或是计算机相关专业的大学生&#xff0c;甚至是正在从事软件开发的职场人&#xff0c;本书都适合您阅读和学习。但您若想更深入地学习Python并进行深层次应用&#xf…

第一个vue——01

指定vue实例的挂载位置 <div id ‘app’> </div> 一、创建vue实例 1.为什么要 new vue() ,直接调用vue&#xff08;&#xff09;函数可以吗&#xff1f; No&#xff0c; 因为直接调用vue()函数&#xff0c;不创建实例的话&#xff0c;会出现以下错误&#xff1…

通过 Parallels Desktop 虚拟机安装运行 macOS 15 Sequoia

在 Apple 的 WWDC 24 大会上&#xff0c;macOS Sequoia 15 成为全场热议的焦点。 作为科技爱好者和开发者&#xff0c;我们都迫不及待想要体验这些最新功能。但如果直接把整个 Mac 升级到测试版&#xff0c;可能不太现实&#xff0c;特别是当你需要保持主系统稳定的时候。 幸…

单例模式之饿汉式

文章目录 单例模式&#xff08;饿汉式&#xff09;代码静态变量创建实例代码静态代码块创建实例 单例模式&#xff08;饿汉式&#xff09; 单例模式是一种创建性的设计模式&#xff0c;主要是保证一个类只能有一个实例。全局中保证一个实例的使用。 单例模式饿汉式主要的构成…

数据库常见问题(持续更新)

数据库常见问题(持续更新) 1、数据库范式&#xff1f; 1NF&#xff1a;不可分割2NF&#xff1a;没有非主属性对候选码存在部分依赖3NF&#xff1a;没有非主属性传递依赖候选码BCNF&#xff1a;消除了主属性对对候选码的传递依赖或部分依赖 2、InnoDB事务的实现&#xff1f; …