PAT甲级【1014 Waiting in Line】
- 考察双向链表
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.LinkedList; public class Main {
@SuppressWarnings("uncheck")
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new InputStreamReader(System.in));
int n, m, k, q;
st.nextToken();
n = (int) st.nval;
st.nextToken();
m = (int) st.nval;
st.nextToken();
k = (int) st.nval;
st.nextToken();
q = (int) st.nval; LinkedList<int[]>[] queue = new LinkedList[n];
for (int i = 0; i < n; i++) {
queue[i] = new LinkedList<>();
}
int[][] time = new int[k + 1][2];
int[] cost = new int[k];
for (int i = 0; i < k; i++) {
st.nextToken();
int v = (int) st.nval;
cost[i] = v;
if (i < m * n) {
if (queue[i % n].isEmpty()) {
queue[i % n].add(new int[]{i, 0, v});
time[i + 1] = new int[]{0, v};
continue;
}
int[] last = queue[i % n].getLast();
int finishedtime = last[2];
queue[i % n].add(new int[]{i, finishedtime, finishedtime + v});
time[i + 1] = new int[]{finishedtime, finishedtime + v};
} else {
int min = 1000_000_00;
int minindex = -1;
for (int j = 0; j < n; j++) {
int[] first = queue[j].peekFirst();
if (min > first[2]) {
min = first[2];
minindex = j;
}
}
int[] last = queue[minindex].getLast();
int finishedtime = last[2]; queue[minindex].pollFirst();
queue[minindex].add(new int[]{i, finishedtime, finishedtime + v}); time[i + 1] = new int[]{finishedtime, finishedtime + v};
}
} int max = 540;
for (int i = 1; i <= q; i++) {
st.nextToken();
int index = (int) st.nval;
if (time[index][0] < max) {
System.out.println(format(time[index][1]));
} else {
System.out.println("Sorry");
}
}
} public static String format(int time) {
int x = time / 60 + 8;
int y = time % 60; StringBuilder sb = new StringBuilder();
if (x < 10) {
sb.append("0").append(x);
} else {
sb.append(x);
}
sb.append(":");
if (y < 10) {
sb.append("0").append(y);
} else {
sb.append(y);
}
return sb.toString();
}
}
PAT甲级【1014 Waiting in Line】的更多相关文章
- PAT甲级1014. Waiting in Line
PAT甲级1014. Waiting in Line 题意: 假设银行有N个窗口可以开放服务.窗前有一条黄线,将等候区分为两部分.客户要排队的规则是: 每个窗口前面的黄线内的空间足以包含与M个客户的一 ...
- PAT 甲级 1014 Waiting in Line (30 分)(queue的使用,模拟题,有个大坑)
1014 Waiting in Line (30 分) Suppose a bank has N windows open for service. There is a yellow line ...
- PAT A 1014. Waiting in Line (30)【队列模拟】
题目:https://www.patest.cn/contests/pat-a-practise/1014 思路: 直接模拟类的题. 线内的各个窗口各为一个队,线外的为一个,按时间模拟出队.入队. 注 ...
- PAT甲级——A1014 Waiting in Line
Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...
- PAT 1014 Waiting in Line (模拟)
1014. Waiting in Line (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Suppo ...
- 1014 Waiting in Line (30分)
1014 Waiting in Line (30分) Suppose a bank has N windows open for service. There is a yellow line i ...
- PTA (Advanced Level) 1014 Waiting in Line
Waiting in Line Suppose a bank has N windows open for service. There is a yellow line in front of th ...
- 【PAT甲级】1014 Waiting in Line (30 分)(队列维护)
题面: 输入四个正整数N,M,K,Q(N<=20,M<=10,K,Q<=1000),N为银行窗口数量,M为黄线内最大人数,K为需要服务的人数,Q为查询次数.输入K个正整数,分别代表每 ...
- PAT 1014. Waiting in Line
Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...
- PAT 1014 Waiting in Line (模拟)
Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...
随机推荐
- 使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序
对于在线客服与营销系统,客服端指的是后台提供服务的客服或营销人员,他们使用客服程序在后台观察网站的被访情况,开展营销活动或提供客户服务.在本篇文章中,我将详细介绍如何通过 WPF + Chrome 内 ...
- Oracle-ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
问题描述 ORA-12505, TNS:listener does not currently know of SID given in connect descriptorORA-12505: TN ...
- HBase相关面试题汇总
1.HBase是什么? (1) HBase一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper进行管理. (2) HBase适合存储半结构化或非结构化数据,对于数据结构 ...
- UVA12467 Secret Word 题解
题目传送门 前置知识 前缀函数与 KMP 算法 解法 考虑将 \(S\) 翻转后得到 \(S'\),然后就转化为求 \(S'\) 的一个最长子串使得其是 \(S\) 的前缀.使用 KMP 求解即可. ...
- ES6学习 第六章 数值的扩展
前言 本章介绍数值的扩展.新增了很多方法,有些不常用的方法了解即可. 本章原文链接:数值的扩展 进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. ...
- C语言中,指针变量的坑
先看一个初始化带头结点单链表的例子,LNode是结点变量,LinkList是结点指针变量,等同于LNode* typedef struct LNode{ // 定义单链表节点类型 int data; ...
- Java的协程Quasar
协程是对函数和线程进一步优化的产物, 是一种函数的编排方式, 将传统意义上的函数拆成更小粒度的过程. 简单说, 就是比函数粒度还要小的可手动控制的过程. 协程可以通过yield 来调用其它协程,接下来 ...
- Java并发编程实例--9.使用本地线程变量
并发程序一个重要方面就是共享数据. 这一点在继承了Thread类或实现了Runnable接口的对象中有着特殊的重要性. 如果你创建了一个实现了Runnable接口的类对象并且用这个对象开启了N个线程对 ...
- Unity学习笔记--数据持久化XML文件(1)
XML相关 Xml是可拓展标记语言,一种文件格式.我们使用xml来完成对数据持久化的存储.等待我们有一程序运行结束之后,将内存中的数据进行保存,(保存在硬盘/服务器)实现对数据的持久化存储. xml文 ...
- Flask AttributeError 'Request' object has no attribute 'is_xhr'解决办法
flask版本0.12.5 运行时会报以上错误,原因是因为werkzeug的版本大于等于1.x版本. 解决办法,降低werkzeug的版本即可 pip uninstall Werkzeug pip i ...