5个制造企业电子商务网站,国内html5网站欣赏,浏览器网址入口,flash中文网站模板题目#xff1a;“饱了么”外卖系统中维护着N 家外卖店#xff0c;编号1~N。每家外卖店都有一个优先级#xff0c;初始时(0 时刻) 优先级都为0。每经过1 个时间单位#xff0c;如果外卖店没有订单#xff0c;则优先级会减少1#xff0c;最低减到0#xff1b;而如果外卖店…题目“饱了么”外卖系统中维护着N 家外卖店编号1~N。每家外卖店都有一个优先级初始时(0 时刻) 优先级都为0。每经过1 个时间单位如果外卖店没有订单则优先级会减少1最低减到0而如果外卖店有订单则优先级不减反加每有一单优先级加2。如果某家外卖店某时刻优先级大于5则会被系统加入优先缓存中如果优先级小于等于3则会被清除出优先缓存。给定T 时刻以内的M 条订单信息请你计算T 时刻时有多少外卖店在优先缓存中。输入第一行包含3 个整数N、M 和T。以下M 行每行包含两个整数ts 和id表示ts 时刻编号id 的外卖店收到一个订单1N, M, T1000001tsT1idN。输出输出一个整数代表答案。样例输入2 6 61 15 23 16 22 16 2样例输出1分析先建一个用来储存id和订单时间的数组然后通过扫描器把id ts打印进去之后外层控制n店铺数量二维数组外层内层控制t(这个时间之内的订单计算)遍历出每个n的所有时间然后根据这个时间有多少订单再进行相对应的计算每次经过一个地方就要判断此时是不是优先缓存。最终true就是优先缓存下图是题目给定的例子转换成表格也就是本题所转换的二维数组每个格子中有两种情况第一种情况是有数字有数字的话num就加上格子中的数字乘以2这个数字。第二种情况没有数字没有数字的情况下num-1,但如果num0的话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[n1][m1];//用来储存每个店铺在某个时刻有多少订单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();}
}