当前位置: 首页 > news >正文

第十届省赛——7外卖店优先级

题目:

“饱了么”外卖系统中维护着N 家外卖店,编号1~N。

每家外卖店都有一个优先级,初始时(0 时刻) 优先级都为0。

每经过1 个时间单位,如果外卖店没有订单,则优先级会减少1,最低减到0;

而如果外卖店有订单,则优先级不减反加,每有一单优先级加2。

如果某家外卖店某时刻优先级大于5,则会被系统加入优先缓存中;

如果优先级小于等于3,则会被清除出优先缓存。

给定T 时刻以内的M 条订单信息,请你计算T 时刻时有多少外卖店在优先缓存中。

输入

第一行包含3 个整数N、M 和T。

以下M 行每行包含两个整数ts 和id,表示ts 时刻编号id 的外卖店收到一个订单

1<=N, M, T<=100000,1<=ts<=T,1<=id<=N。

输出

输出一个整数代表答案。

样例输入

2 6 6

1 1

5 2

3 1

6 2

2 1

6 2

样例输出

1

分析:

先建一个用来储存id和订单时间的数组,然后通过扫描器把id ts打印进去,之后外层控制n(店铺数量,二维数组外层),内层控制t(这个时间之内的订单计算),遍历出每个n的所有时间,然后根据这个时间有多少订单再进行相对应的计算,每次经过一个地方就要判断此时是不是优先缓存。最终true就是优先缓存

下图是题目给定的例子,转换成表格,也就是本题所转换的二维数组

每个格子中有两种情况,

第一种情况是有数字,有数字的话,num就加上(格子中的数字乘以2)这个数字。

第二种情况没有数字,没有数字的情况下,num-1,但如果num==0的话,num继续=0。

每一次判断完格子,就进行一次判断,来判断num符不符合加入优先缓存的条件,加不加入,用boolean判断来判断,加入的话就让boolean等于true。

进行完一个id的num值加减之后,boolean依然为true,那么count++;(该id最终加入到优先缓存中)

步骤:

package 历届真题省赛阶段;import java.util.Scanner;public class 测试1 {public static void main(String[] args) {
//        第一行包含 3 个整数 N、M 和 T。
//        以下 M 行每行包含两个整数 ts 和 id,表示 ts 时刻编号 id 的外卖店收到
//        一个订单。Scanner sc = new Scanner(System.in);int n = sc.nextInt();// 多少个店铺int m = sc.nextInt();// 多少条订单int t = sc.nextInt();// t时间之内的订单int[][] zu = new int[n+1][m+1];//用来储存每个店铺在某个时刻有多少订单int count = 0;for (int i = 1; i <= m; i++) {int ts = sc.nextInt();int id = sc.nextInt();zu[id][ts]++;//外层id内层时间,数量用值来表示}for (int i = 1; i <= n; i++) {//遍历数组中每个id的值,根据值进行num的变化int num = 0;//缓存值boolean flag = false;for (int j = 1; j <= t; j++) {if (zu[i][j] == 0) {//该时间没有订单的情况if (num == 0) {//如果是0就不用继续减了,不是0的话进行自减num = 0;} else {num--;}} else {num += zu[i][j] * 2;//有订单的话,num本身值再加上这个时间订单数量乘以二}if (num > 5) {//每次经过一个时间都做一次判断,判断此时是不是在优先缓存中flag = true;}if (num <= 3) {flag = false;}}if (flag) {count++;}}System.out.println(count);sc.close();}
}
http://www.lryc.cn/news/35778.html

相关文章:

  • 做自动化测试选择Python还是Java?
  • C#基础之基础语法(一)
  • 【JVM篇1】认识JVM,内存区域划分,类加载机制
  • CHAPTER 5 文件共享 - FTP
  • 【MySQL】将 CSV文件快速导入 MySQL 中
  • Ngnix安装教程(2023.3.8)
  • 【C语言】每日刷题 —— 牛客(2)
  • 关于算法的一些简单了解
  • mysql无法启动服务及其他问题总结
  • 数据库表字段命名规范
  • 23种设计模式-命令模式(android应用场景介绍)
  • vector你得知道的知识
  • 【C++进阶】四、AVL树(二)
  • React 服务端渲染
  • 【算法设计-搜索】回溯法应用举例(1)
  • C++基础了解-23-C++ 多态
  • 【GNN/深度学习】常用的图数据集(资源包)
  • Clickhouse中bitmap介绍以及计算留存Demo
  • 大数据是什么?学习后能找高薪工作么
  • 如何提取视频中的音频转文字?分享提效减负视频转文字方法
  • 脑机接口科普0018——前额叶切除手术
  • FPGA工程师面试——基础知识
  • 全国青少年软件编程(Scratch)等级考试一级真题——2019.12
  • 【Integrated Electronics系列——数字电子技术基础】
  • 【微信小程序】-- 页面处理总结(三十一)
  • Spring Batch使用详细例子
  • 漏洞预警|Apache Dubbo 存在反序列化漏洞
  • Tomcat源码分析-spring boot集成tomcat
  • 一个古老的html后台的模板代码
  • 支持向量回归删除异常值Python