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 ...
随机推荐
- (C语言)每日代码||2024.1.10||scanf("%6f",&a)
#include <stdio.h> int main() { float a; scanf("%.3f", &a);//输入1234 printf(" ...
- spring声明式事务(@Transactional)开发常犯的几个错误及解决办法
spring声明式事务(@Transactional)开发常犯的几个错误及解决办法 目前JAVA的微服务项目基本都是SSM结构(即:springCloud +springMVC+Mybatis),而其 ...
- MySQL数据库详解(上)
MySQL(一) 1.登陆 mysql -uroot -pMyPassword 使用默认的root用户名登陆,将MyPassword改成自己的密码 2.基本操作 --注释 updata mysql . ...
- Linux--Vi编辑命令(插入、替换、命令行模式、撤销)
1.进入插入模式(6个命令) [i] 从目前光标所在处插入 [I] 从目前光标 [a] 从当前光标所在的下一个字符处开始插入 [A] 从光标所在行的最后一个字符处开始插入 [o] 英文小写字母o,在目 ...
- win10 通过 ssh 连接云服务器失败 are too open. bad permissions.
最近突然想起了自己的学生机服务器,买来了吃灰很久了,拿出来捣鼓捣鼓 以前服务器装的 windows server,这次把它重装成了 CentOS 8.0,然后按官网步连接步骤骤一步一步尝试. 腾讯云官 ...
- 基于Microsoft SemanticKernel和GPT4实现一个智能翻译服务
今年.NET Conf China 2023技术大会,我给大家分享了 .NET应用国际化-AIGC智能翻译+代码生成的议题 .NET Conf China 2023分享-.NET应用国际化-AIGC智 ...
- Linux dmesg命令使用方法详解
一.命令简介 dmesg(display message)命令用于显示开机信息.kernel 会将开机信息存储在 ring buffer 中.您若是开机时来不及查看信息,可利用 dmesg 来查看. ...
- PyOCD Notes
Installation Ubuntu20.04 For Ubuntu20.04 the version in apt repository is 0.13.1+dfsg-1, which is to ...
- 【Unity3D】使用GL绘制线段
1 前言 线段渲染器LineRenderer.拖尾TrailRenderer.绘制物体表面三角形网格从不同角度介绍了绘制线段的方法,本文再介绍一种新的绘制线段的方法:使用 GL 绘制线段. G ...
- Git实战系列教程
介绍 本文详细记录了Git一系列核心概念和工作中常用的操作命令,通篇以实际出发拒绝过度理论,值得典藏:). 概念 版本管理系统 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的 ...