解题思路:
本题感觉就是阅读理解题,不算难题,只要认真点就行了。
注意事项:
①外卖店有订单时,优先级不增反减。
②外卖店优先级超过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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复