首页 > 学院 > 开发设计 > 正文

uva 210 Concurrency Simulator (并行堆栈模拟)

2019-11-06 07:01:12
字体:
来源:转载
供稿:网友

模拟一下就好了,可以用Deque双端队列

import java.util.Arrays;import java.util.Deque;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Main {	static int[] time = new int[129];	static int[] ch = new int[26];	public static void main(String[] args) {		Scanner scan = new Scanner(System.in);		int T = scan.nextInt();		while(T--!=0){			Arrays.fill(time, 0);			Arrays.fill(ch, 0);			int n = scan.nextInt();			int t1 = scan.nextInt();			int t2 = scan.nextInt();			int t3 = scan.nextInt();			int t4 = scan.nextInt();			int t5 = scan.nextInt();			int Q = scan.nextInt();						time['='] = t1;			time['i'] = t2;			time['c'] = t3;			time['l'] = t4;			time['d'] = t5;			scan.nextLine();			Deque<PRogram> wait = new LinkedList<>();			Queue<Program> stop = new LinkedList<>();			for(int i=1;i<=n;i++){				Program program = new Program();				program.number = i;				while(true){					String s = scan.nextLine();					program.code.add(s);					if("end".equals(s))break;				}				wait.add(program);			}						boolean isLock = false;			while(!wait.isEmpty()){				//System.out.println("1");				Program program =wait.poll();				int t = Q;				while(!program.code.isEmpty()){					if(t<=0){						wait.add(program);						break;					}					String s = program.code.peek();					if(s.charAt(2)=='c'){						if(isLock){							stop.add(program);							break;						}else{							isLock = true;						}					}					t-=time[s.charAt(2)];					program.code.poll();					if(s.charAt(2)=='='){						char c = s.charAt(0);						int num = Integer.parseInt(s.substring(4));						ch[c-'a'] = num;					}					if(s.charAt(2)=='d'){						break;					}					if(s.charAt(2)=='l'){						isLock = false;						if(!stop.isEmpty()){							wait.addFirst(stop.poll());						}					}					if(s.charAt(2)=='i'){						char c = s.charAt(6);						System.out.println(program.number+": "+ch[c-'a']);					}				}			}			if(T!=0){				System.out.println();			}		}	}	static class Program{		int number;		Queue<String> code = new LinkedList<>();	}}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表