UVa 12100 - Printer Queue
描述 : 输入打印任务及关注的任务在输入中的位置,从0开始。如果当前任务的优先级不是最高的则把当前任务加在队列最后。计算当前任务打印完成的时刻。每个任务的打印都是需要1分钟。
思路 : 类似于优先级队列,但是不一样。设置一个数组记录优先级并由大到小排序,然后模拟执行。
代码 :
import java.util.*;
public class Main12100 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
while(t-- > 0) {
Queue<work> q = new LinkedList<work>();
int n = scan.nextInt();
int f = scan.nextInt();
work[] w = new work[n];
for(int i=0; i<n; i++) {
int p = scan.nextInt();
if(i == f) {
w[i] = new work(p, -1);
q.offer(w[i]);
}else {
w[i] = new work(p, i);
q.offer(w[i]);
}
}
for(int j=0; j<n-1; j++) {
for(int i=0; i<n-1-j; i++) {
if(w[i].pori < w[i+1].pori) {
work k = w[i];
w[i] = w[i+1];
w[i+1] = k;
}
}
}
int cnt = 0;
while(true) {
work temp = q.peek();
//if(temp.flag == -1)break;
if(temp.pori == w[cnt].pori) {
if(temp.flag == -1)break;
else {
q.poll();
cnt ++;
}
}else {
q.offer(q.poll());
}
}
cnt ++;
System.out.println(cnt);
}
}
}
class work {
public int pori;
public int flag;
public work(int p, int f) {
pori = p;
flag = f;
}
}
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。








浙公网安备 33010602011771号