藍橋杯javaB組--外賣店優先級


【問題描述】
“飽了么”外賣系統中維護着 N 家外賣店,編號 1 ∼ N。每家外賣店都有
一個優先級,初始時 (0 時刻) 優先級都為 0。
每經過 1 個時間單位,如果外賣店沒有訂單,則優先級會減少 1,最低減
到 0;而如果外賣店有訂單,則優先級不減反加,每有一單優先級加 2。
如果某家外賣店某時刻優先級大於 5,則會被系統加入優先緩存中;如果
優先級小於等於 3,則會被清除出優先緩存。
給定 T 時刻以內的 M 條訂單信息,請你計算 T 時刻時有多少外賣店在優
先緩存中。
【輸入格式】
第一行包含 3 個整數 N、M 和 T。
以下 M 行每行包含兩個整數 ts 和 id,表示 ts 時刻編號 id 的外賣店收到
一個訂單。
【輸出格式】
輸出一個整數代表答案。
【樣例輸入】
2 6 6
1 1
5 2
3 1
6 2
2 1
6 2

public class Mdian
{
    public int ts;
    public int id;
    
    public Mdian()
    {
        this.ts = 0;
        this.id = 0;
    }
    public Mdian(int a,int b)
    {
        this.ts = a;
        this.id = b;
    }
}

import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;



public class 外賣店優先級
{
    
    public static void main(String[] args)
    {
        Mdian mdian = new Mdian();
        List<Mdian> list = new ArrayList();
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int M = scanner.nextInt();
        int T = scanner.nextInt();
        
        int [][] art = new int[N][2];//保存每家外賣店及優先級
        for(int i=0;i<N;i++)
        {
            art[i][0]=i+1;//商家Id
            art[i][1]=0;//優先級都為0;
        }
        
        
        for(int i=0;i<M;i++)
        {
            Mdian mdian1 = new Mdian();
            mdian1.ts = scanner.nextInt();
            mdian1.id = scanner.nextInt();
            list.add(mdian1);
        }
        
        List<Integer> li = new ArrayList();//用來保存某一時刻,有訂單的店家
        List<Integer> huncun = new ArrayList<>();//用來保存緩存店鋪
        
        for(int i=1;i<=T;i++)//從開始到T時刻
        {
            li.clear();
            for(Mdian mm : list)//遍歷信息單
            {
                if(mm.ts == i)//找到該時刻對應的店面
                {
                    int t = mm.id-1;
                    art[t][1] +=2;//優先級+2;
                    li.add(t+1);//把有訂單的商品存入list中
                }
            }
            
            
            for(int j=1;j<=N;j++)//將不再li中的店家減1
            {
                if(li.indexOf(j)==-1)//不在里面
                {
                    if(art[j-1][1]>0)
                        art[j-1][1] -=1;
                }
            }
            
            for(int k=1;k<=N;k++)//判斷優先級是否加入或移出緩存。
            {
                if(huncun.indexOf(k)==-1)//店家K不在緩存中
                {
                    if(art[k-1][1]>5)//優先級大於5
                        huncun.add(k);
                }
                else {
                    if(art[k-1][1]<=3)//優先級小於等於3
                    {
                        int index = huncun.indexOf(k);//找打list所移除目標下標
                        huncun.remove(index);
                    }
                }
                    
            }
            
        }
        
        System.out.print(huncun.size());
        

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM