2019蓝桥杯省赛---java---B---7(外卖店优先级)
生活随笔
收集整理的這篇文章主要介紹了
2019蓝桥杯省赛---java---B---7(外卖店优先级)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
時間限制: 1.0s 內存限制: 512.0MB 本題總分:20 分 【問題描述】 “飽了么”外賣系統中維護著 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 【樣例輸出】 1 【樣例解釋】 6 時刻時,1 號店優先級降到 3,被移除出優先緩存;2 號店優先級升到 6,加入優先緩存。所以是有 1 家店 (2 號) 在優先緩存中。 【評測用例規模與約定】 對于 80% 的評測用例,1 ≤ N, M, T ≤ 10000。思路分析
類似于:日志統計https://wdlyb.blog.csdn.net/article/details/115449611
代碼實現
package lanqiao;import java.util.*; public class Main{static int counts=0;public static void main(String[] args) {Scanner sc=new Scanner(System.in);int N=sc.nextInt();int M=sc.nextInt();int T=sc.nextInt();Map<Integer,List>map=new HashMap<>();for(int i=0;i<M;i++) {int value=sc.nextInt();int key=sc.nextInt();if(map.get(key)==null) {List<Integer>list = new ArrayList<>();list.add(value);map.put(key, list);}else {map.get(key).add(value);}}for(Integer key:map.keySet()) {List<Integer>list =map.get(key);int[]times=new int[T+1];for(Integer i:list)times[i]++;int nowCount=0;//記錄優先級for(int i=1;i<=T;i++) {if(times[i]>0) {nowCount+=times[i]*2;}else {if(nowCount>0)nowCount--;}}if(nowCount>=5)counts++;}System.out.println(counts);} }總結
以上是生活随笔為你收集整理的2019蓝桥杯省赛---java---B---7(外卖店优先级)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018蓝桥杯省赛---java---B
- 下一篇: 怎么看主板和显卡兼容?