蓝桥杯java外卖店优先级

蓝桥杯java A组 外卖店优先级

随便写了一个解法,但是时空复杂度都太高了,因为看到题目之后只有这种思路,后面会改进。

package JA;

import java.util.Scanner;

/**
 * 外卖店优先级
 */
public class PriorityOfTakeAway {
    public static void main(String[] args) {
        /**
         * 以下为自己想出来的方法,但是时空复杂度都太高了
         */
        //首先获取三个输入
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        int M = in.nextInt();
        int T = in.nextInt();

        //现在创建一个数组,存储每个外卖店的优先级,初始化都为0
        //数据小还好,数据太大了的话,太浪费空间了
        //把外层的下标都作为时间
        int[] re = new int[N+1];
        int[] resultL = new int[N+1];//最后的优先缓存
        for (int i=0;i<=N;i++){
            re[i] = 0;
            resultL[i] = 0;
        }
        int[][] priority = new int[T+1][N+1];
        for (int i=0;i<T+1;i++){
            for (int j=0;j<N+1;j++){
                priority[i][j] = 0;
            }
        }

        for (int i=1;i<=M;i++){
            int st = in.nextInt();
            int id = in.nextInt();
            priority[st][id]++;
        }

        for (int i=1;i<T+1;i++){
            for (int j=1;j<N+1;j++){
                if (priority[i][j] == 0){
                    if (re[j] > 0){
                        re[j]--;
                    }
                }else{
                    re[j] += 2*priority[i][j];
                }
                if (re[j] > 5){
                    resultL[j] = 1;
                }else if(re[j] <= 3){
                    resultL[j] = 0;
                }
            }
        }
        int result = 0;
        for (int i=0;i<N+1;i++){
            result += resultL[i];
        }
        System.out.println(result);
    }
}

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

DemoRosie

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值