题目:
文章图片
文章图片
思路:
【算法_|第十届蓝桥杯省赛JavaB组G_外卖店优先级】本题关键是二维数组的建立,二维数组保存的意义。如下图:
文章图片
二维数组以时间、店数建立 在输入数据的时候,判断某时刻的某家店的订单情况,直接加到订单数中,之后进行for循环,利用set集合便可求出
代码:
import java.util.HashSet;
import java.util.Scanner;
public class G_外卖店优先级 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//人数
int m = sc.nextInt();
//订单数
int p = sc.nextInt();
//时间数HashSet set = new HashSet<>();
int[][] arr = new int[p][n];
//数据集//接收数据
for (int i = 0;
i < m;
i++) {
int t = sc.nextInt();
int x = sc.nextInt();
arr[t - 1][x - 1] += 1;
}//for (int[] ints : arr) {
//System.out.println(Arrays.toString(ints));
//}for (int i = 0;
i < n;
i++) {//店数
int temp = 0;
//储存店的优先级
for (int i1 = 0;
i1 < p;
i1++) {//时间
if (arr[i1][i] != 0) {
temp = temp + 2 * arr[i1][i];
} else {
if (temp != 0) {//判断是否此时优先级为0
temp -= 1;
}
}//每次判断一个时刻,就需要判断一下是否加入优先队列
//这里利用了set集合的特点****
if (temp > 5) {
set.add(" " + i);
} else if (temp <= 3) {
set.remove(" " + i);
}
}
}
System.out.println(set.size());
}
}
最后有一个数据超时!!
文章图片
推荐阅读
- Java基础|Java真的不难(三十一)建造者模式
- DP专题|多重背包问题和“二进制拆分”
- 数学|数学题---与n互质数字之和
- 图论|判断图连通性的三种方法(并查集/dfs/bfs)
- java|亚马逊跨境电商平台怎么入驻()
- ByteBuf 常用操作
- CSC148H1 算法比较分析
- java|使用虹软SDK实现离线人脸识别(局域网)
- java|前端小游戏飞机大战源码完整版