全部评论
每次遇到玩具,就把玩具的时间加入小根堆,遇到猫就从小根堆里拿一个时间,如果时间比直接摸的时间小就用堆顶时间,否则就直接摸。
直接模拟过程即可
优先队列
import java.util.*; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int T = sc.nextInt(); int[] toy=new int[k]; for (int i = 0; i < k; i++) { toy[i]= sc.nextInt(); } int res=0; PriorityQueue<Integer> pq=new PriorityQueue<>(); for (int i = 0; i < n; i++) { int x=sc.nextInt(); if(pq.size()==0&&x==0){ res+=T; }else if(x>0&&x-1<k&&toy[x-1]<T){//key point pq.add(toy[x-1]); }else if(x==0){ res+=pq.poll(); } } System.out.println(res); } }
最小堆就行
相关推荐
Asp1rin:自己平心而论每天刷牛客的时间和学习的时间哪个更多
点赞 评论 收藏
分享
点赞 评论 收藏
分享