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. CentOS7上systemctl的使用

    CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替. 1.原来的 service 命令与 s ...

  2. Vdbench 使用说明

    一. vdbench简介 vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能.它是一个免费的工具,容易使用,而且常常用于测试和基准测试. 可以使用vd ...

  3. colrm命令

    colrm命令 colrm命令用于编辑源代码文件,脚本文件或常规文本文件中的文本,此命令从文件中删除选定的列,列定义为一行中的单个字符.索引总是从1开始,而不是0.如果同时指定了开始和结束,则它们之间 ...

  4. Laravel入坑指南(7)——中间件Middleware

    Laravel框架中引入了"中间件"这个概念,笔者觉得不是太合适.这里的Middleware和Java Servlet中的过滤器(Filter)就是一个东西,但是想比之下Filte ...

  5. 3D环饼图

    // <div class="AnalysisAccCom">         <first-title title="分析对象统计"> ...

  6. 理解[].forEach.call()并说明为什么要使用[].forEach.call()

    [].forEach.call(elems, callback) 相当于: Array.prototype.forEach.call(elems, callback) 又相当于: function(e ...

  7. vue运行时报错Error from chokidar

    原文博客地址 Error from chokidar (/home/youyou/文档/vue/vuetask01/node_modules/lodash): Error: ENOSPC: Syste ...

  8. Lua调试函数 debug.getinfo() namewhat详解

    Lua调试的时候会用到debug.getinfo()函数,what的值文档给了解释: "Lua" : Lua function "C" : C function ...

  9. 我的第一个项目(七):(解决问题)Vue中canvas无法绘制图片

    好家伙,   现在,我想要把我的飞机大战塞到我的主页里去,想办法把文件导入 然后,直接死在第一步,图片渲染都成问题 先用vue写一个测试文件 来测试canvas的绘制 <template> ...

  10. 【Azure 应用服务】如何查看App Service中的私网IP地址?

    问题描述 在使用App Service服务时,可以通过Azure 门户中的属性功能查看出站IP列表. 如果把App Service与虚拟网络(VNET)集成后,它就可以直接访问虚拟网络内部资源,那么如 ...