1. 考察双向链表
  2. 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】的更多相关文章

  1. PAT甲级1014. Waiting in Line

    PAT甲级1014. Waiting in Line 题意: 假设银行有N个窗口可以开放服务.窗前有一条黄线,将等候区分为两部分.客户要排队的规则是: 每个窗口前面的黄线内的空间足以包含与M个客户的一 ...

  2. 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 ...

  3. PAT A 1014. Waiting in Line (30)【队列模拟】

    题目:https://www.patest.cn/contests/pat-a-practise/1014 思路: 直接模拟类的题. 线内的各个窗口各为一个队,线外的为一个,按时间模拟出队.入队. 注 ...

  4. 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 ...

  5. PAT 1014 Waiting in Line (模拟)

    1014. Waiting in Line (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Suppo ...

  6. 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 ...

  7. 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 ...

  8. 【PAT甲级】1014 Waiting in Line (30 分)(队列维护)

    题面: 输入四个正整数N,M,K,Q(N<=20,M<=10,K,Q<=1000),N为银行窗口数量,M为黄线内最大人数,K为需要服务的人数,Q为查询次数.输入K个正整数,分别代表每 ...

  9. 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 ...

  10. 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 ...

随机推荐

  1. 使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序

    对于在线客服与营销系统,客服端指的是后台提供服务的客服或营销人员,他们使用客服程序在后台观察网站的被访情况,开展营销活动或提供客户服务.在本篇文章中,我将详细介绍如何通过 WPF + Chrome 内 ...

  2. 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 ...

  3. HBase相关面试题汇总

    1.HBase是什么? (1) HBase一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper进行管理. (2) HBase适合存储半结构化或非结构化数据,对于数据结构 ...

  4. UVA12467 Secret Word 题解

    题目传送门 前置知识 前缀函数与 KMP 算法 解法 考虑将 \(S\) 翻转后得到 \(S'\),然后就转化为求 \(S'\) 的一个最长子串使得其是 \(S\) 的前缀.使用 KMP 求解即可. ...

  5. ES6学习 第六章 数值的扩展

    前言 本章介绍数值的扩展.新增了很多方法,有些不常用的方法了解即可. 本章原文链接:数值的扩展 进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. ...

  6. C语言中,指针变量的坑

    先看一个初始化带头结点单链表的例子,LNode是结点变量,LinkList是结点指针变量,等同于LNode* typedef struct LNode{ // 定义单链表节点类型 int data; ...

  7. Java的协程Quasar

    协程是对函数和线程进一步优化的产物, 是一种函数的编排方式, 将传统意义上的函数拆成更小粒度的过程. 简单说, 就是比函数粒度还要小的可手动控制的过程. 协程可以通过yield 来调用其它协程,接下来 ...

  8. Java并发编程实例--9.使用本地线程变量

    并发程序一个重要方面就是共享数据. 这一点在继承了Thread类或实现了Runnable接口的对象中有着特殊的重要性. 如果你创建了一个实现了Runnable接口的类对象并且用这个对象开启了N个线程对 ...

  9. Unity学习笔记--数据持久化XML文件(1)

    XML相关 Xml是可拓展标记语言,一种文件格式.我们使用xml来完成对数据持久化的存储.等待我们有一程序运行结束之后,将内存中的数据进行保存,(保存在硬盘/服务器)实现对数据的持久化存储. xml文 ...

  10. Flask AttributeError 'Request' object has no attribute 'is_xhr'解决办法

    flask版本0.12.5 运行时会报以上错误,原因是因为werkzeug的版本大于等于1.x版本. 解决办法,降低werkzeug的版本即可 pip uninstall Werkzeug pip i ...