时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分

【问题描述】 “饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减 到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。 如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果 优先级小于等于 3,则会被清除出优先缓存。 给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优 先缓存中。

【输入格式】
第一行包含 3 个整数 N、M 和 T。 以下 M 行每行包含两个整数 ts 和 id,表示 ts 时刻编号 id 的外卖店收到 一个订单。

【输出格式】
输出一个整数代表答案。

【样例输入】
2 6 6
1 1
5 2
3 1
6 2
2 1
6 2

【样例输出】
1

代码如下:

import java.util.*;public class 外卖优先级 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();int M = scanner.nextInt();int T = scanner.nextInt();int[][] ints_time_number = new int[M][T];    //存放时刻和店号的数组int result = 0; //最后,在优先缓存区里的店的个数HashMap<Integer,Integer> hashMap = new HashMap<>();for (int i = 1; i <= N; i++) {hashMap.put(i,0);}Set<Integer> set = hashMap.keySet();for (int j = 0; j < M; j++) {ints_time_number[j][0] = scanner.nextInt();   //时刻ints_time_number[j][1] = scanner.nextInt(); //店号}for(int i=0; i<M-1; i++){for(int j=0; j<M-1-i; j++){if(ints_time_number[j][0] > ints_time_number[j+1][0]){int temp = ints_time_number[j][0];ints_time_number[j][0] = ints_time_number[j+1][0];ints_time_number[j+1][0] = temp;}}}ArrayList<Integer> arrayList = new ArrayList<>();for (int i = 0; i < T; i++) {arrayList.add(i+1);}for (Integer k : set) {for (int i = 0; i < M; i++) {if (ints_time_number[i][1] == k) {      //看店号hashMap.put(k, hashMap.get(k) + 2);} else {hashMap.put(k, hashMap.get(k) - 1);if (hashMap.get(k) < 0) {hashMap.put(k, 0);}}}}Set<Integer> set1 = new HashSet<>();for (int i = 0; i < arrayList.size(); i++) {set1.add(ints_time_number[i][0]);}//比较 去重后的 与 不去重的 个数,求差值int no_exist = arrayList.size() - set1.size();for (int i = 0; i < no_exist; i++) {for (Integer n:set) {hashMap.put(n,hashMap.get(n)-1);if (hashMap.get(n) < 0) {hashMap.put(n,0);}}}for (Integer integer: set) {if (hashMap.get(integer) > 5) {result ++;}}System.out.println(result);}
}

重点:
一、将时间由小到大排序了后,即可得到时间排序后的对应的店家号码,遍历号码,一次与键比较,如果相同,则优先级加2,如果不相同就减1。
二、针对有的时间点没有订单,思想如下:
时间点: 1 2 3 5 6 6
arraylist:1 2 3 4 5 6
将时间点放进set中去重,可得知重复元素的个数是多少,也就是有多少个时间点没有订单,则需要将每个店家的优先级都减1.

第十届蓝桥杯大赛软件类省赛Java大学B组 试题 G: 外卖店优先级相关推荐

  1. 第十届蓝桥杯大赛软件类省赛 JAVA 大学 A 组

    迷宫 本题总分:10 分 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为左 ...

  2. 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解

    ============================== 2019-2021蓝桥杯C++ C组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解 2020第十一届蓝桥杯大赛软件类省 ...

  3. 2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解

    ========================================== 2019-2021蓝桥杯C++ B组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解 2020第 ...

  4. 蓝桥杯软件类比赛java,第十届蓝桥杯大赛软件类省赛

    第十届蓝桥杯大赛软件类省赛 这些题官网还没有解答的,我主要参考了b站UP主大雪菜的解法(绝大部分题先自己做了一遍),当然也网上查了一些解答,但发现现在网上的一些解法并不正确,希望可以给大家一个参考. ...

  5. 2019 第十届蓝桥杯大赛软件类省赛 C/C++ 大学 A 组 【部分题解】

    声明: 这些的答案不是官方答案,都是我自己做的,仅供参考.一起加油 试题 A: 平方和 本题总分:5′5 '5′ [问题描述] 小明对数位中含有 2.0.1.92. 0. 1. 92.0.1.9 的数 ...

  6. 第十届蓝桥杯大赛软件类省赛

    其他组见以下链接. 第十届蓝桥杯所有的题 一.研究生组 试题 A: 立方和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1.2 ...

  7. 2、数的分解 - 2019年第十届蓝桥杯大赛软件类省赛

    问题 [问题描述] 把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如 10 ...

  8. 1、数列求值 - 2019年第十届蓝桥杯大赛软件类省赛

    问题 [问题描述] 给定数列 1, 1, 1, 3, 5, 9, 17, -,从第 4 项开始,每项都是前 3 项的和.求第 20190324项的最后 4 位数字. #include <iost ...

  9. 第十届蓝桥杯大赛软件类省赛C++研究生组

    这比赛题目 A 立方和(5,√) B 字串数字(5, √) C 质数(10, √) D 最短路(10, √) E RSA解密(15) F Fibonacci数列与黄金分割(15, √) G 扫地机器人 ...

最新文章

  1. Copying Files
  2. 教育学专硕考试科目计算机,2017考研:哪些专业的考试科目相同?
  3. opencv findContours 崩溃CrtDbgBreak
  4. java代码上传到私服,java生成 java代码 上传maven私服
  5. hdf5与hdfs的区别
  6. ABAP事务码SAT里的Gross time and net time
  7. java 输出编码_从代码看java输入输出中的编码和解码
  8. PAT_B_1058_Java(20分)
  9. 数据结构 【实验3 链表基本操作】
  10. 【转】关于输出用%lf和%f的问题
  11. SNS网站中怎样获取MSN联系人信息
  12. 五种提高 SQL 性能的方法
  13. vc6.0怎么新建c语言项目
  14. Tomcat安装配置
  15. 查看dll文件的两种办法
  16. FFmpeg编码(YUV转H264)并改变视频分辨率示例
  17. 微信小程序php签到功能,小程序签到功能的作用
  18. 软件测试的类型有那些?都有什么不同?
  19. Lucas(卢卡斯)定理 【数论】
  20. 为什么数据库具有很高的独立性

热门文章

  1. 【PASCAL-VOC2012数据集】
  2. 关于表格中的tr 、td、th 那些事
  3. Android下载demo
  4. yum的卸载与重新安装
  5. Python爬虫篇:实现铃声采集
  6. 操作系统——day5
  7. mysql数据库blob换行_mysql数据库blob类型
  8. 深入浅出分布式服务器架构
  9. 回声的来源和消除(转载)
  10. 其他常见的getshell方式