算法_|第十届蓝桥杯省赛JavaB组G_外卖店优先级

题目:
算法_|第十届蓝桥杯省赛JavaB组G_外卖店优先级
文章图片

算法_|第十届蓝桥杯省赛JavaB组G_外卖店优先级
文章图片

思路:
【算法_|第十届蓝桥杯省赛JavaB组G_外卖店优先级】本题关键是二维数组的建立,二维数组保存的意义。如下图:
算法_|第十届蓝桥杯省赛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()); } }

最后有一个数据超时!!
算法_|第十届蓝桥杯省赛JavaB组G_外卖店优先级
文章图片

    推荐阅读