解题思路:
本题感觉就是阅读理解题,不算难题,只要认真点就行了。
注意事项:
①外卖店有订单时,优先级不增反减。
②外卖店优先级超过5时,才能进入缓冲队列。小于等于3时被踢出。
参考代码:
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main7 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int m = scan.nextInt(); int t = scan.nextInt(); int[] p = new int[n + 1]; Order[] orders = new Order[m]; boolean[] cache = new boolean[n + 1]; boolean[] haveOrNot = new boolean[n + 1]; for(int i = 0 ; i < m ; i++) { int ts = scan.nextInt(); int id = scan.nextInt(); orders[i] = new Order(ts, id); } Arrays.sort(orders, new Comparator<Order>() { @Override public int compare(Order arg0, Order arg1) { return arg0.ts - arg1.ts; } }); int k = 0; for(int i = 1 ; i <= t ; i++) { for(int j = 1 ; j <= n ; j++) { haveOrNot[j] = false; } for(int j = k ; j < m ; j++) { if(orders[j].ts > i) { k = j; break; } if(orders[j].ts == i) { p[orders[j].id] += 2; haveOrNot[orders[j].id] = true; } } for(int j = 1 ; j <= n ; j++) { if(p[j] > 0 && haveOrNot[j] == false) { p[j]--; } if(p[j] > 5) { cache[j] = true; } if(p[j] <= 3) { cache[j] = false; } } } int count = 0; for(int i = 1 ; i <= n ; i++) { if(cache[i] == true) { count++; } } System.out.println(count); } } class Order { public int ts; public int id; public Order(int ts, int id) { super(); this.ts = ts; this.id = id; } }
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复