解题思路:
本题感觉就是阅读理解题,不算难题,只要认真点就行了。
注意事项:
①外卖店有订单时,优先级不增反减。
②外卖店优先级超过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分
6 人评分
分糖果 (C++代码)浏览:1537 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:782 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:686 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:509 |
WU-链表数据求和操作 (C++代码)浏览:1382 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:539 |
Hello, world! (C++代码)浏览:1778 |
最小公倍数 (C语言代码)浏览:1105 |
字符逆序 (C语言代码)浏览:645 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:537 |