队列(裸题)
来源:互联网 发布:舞台灯光设计软件 编辑:程序博客网 时间:2024/06/09 22:48
Queue Aizu - ALDS1_3_B
For example, we have the following queue with the quantum of 100ms.
A(150) - B(80) - C(200) - D(200)
First, process A is handled for 100ms, then the process is moved to the end of the queue with the remaining time (50ms).
B(80) - C(200) - D(200) - A(50)
Next, process B is handled for 80ms. The process is completed with the time stamp of 180ms and removed from the queue.
C(200) - D(200) - A(50)
Your task is to write a program which simulates the round-robin scheduling .
Input
n q
name1 time1
name2 time2
...
namen timen
In the first line the number of processes n and the quantum q are given separated by a single space.
In the following n lines, names and times for the n processes are given.namei and timei are separated by a single space.
Output
For each process, prints its name and the time the process finished in order.
Constraints
- 1 ≤ n ≤ 100000
- 1 ≤ q ≤ 1000
- 1 ≤ timei ≤ 50000
- 1 ≤ length of namei ≤ 10
- 1 ≤ Sum of timei ≤ 1000000
Sample Input 1
5 100p1 150p2 80p3 200p4 350p5 20
Sample Output 1
p2 180p5 400p1 450p3 550p4 800
Notes
Template in C题目也是一个很裸的队列,就是支持插入和删除的操作,只不过做成了环,减少了极大的空间花费。同样数组模拟队列。做成环的环的话要注意取模问题。
#include <iostream>#include <cstdio>using namespace std;const int maxn = 100000 + 5;struct node{ char my_name[10]; int my_time;};int n,q;int head,tail;int q_time = 0;node que[maxn];void push_back(node& k){ que[tail++] = k; tail %= (n+5);}node pop_front(){ node k = que[head++]; head %= (n+5); return k;}int main(){ scanf("%d%d",&n,&q); head = 0; tail = 0; for(int i = 1;i <= n; i++){ node Q; scanf("%s%d",Q.my_name,&Q.my_time); push_back(Q); } while(head != tail){ node k = pop_front(); if(k.my_time - q > 0){ k.my_time -= q; push_back(k); q_time += q; } else{ q_time += k.my_time; printf("%s %d\n",k.my_name,q_time); } }}
- 队列(裸题)
- 双向队列(队列)
- 队列(循环队列)
- java队列实现(顺序队列、链式队列、循环队列)
- 关于队列(数组队列,链表队列,循环队列)
- java队列实现(顺序队列、链式队列、循环队列)
- 顺序队列(环形队列)
- poj2823(单调队列队列)
- 循环队列(顺序队列)
- 队列相连(队列,链表)
- 队列( FIFO ) 循环队列
- 循环队列(顺序队列)
- SDUT 双向队列(队列)
- 疯狂队列(交错队列)
- 栈和队列(队列)
- 顺序队列(循环队列)
- C++队列实现和队列简介(不是循环队列)
- java队列--先进先出(循环队列、链队列)
- python技巧之下划线(二)
- Android中获取应用信息
- 记录一下,自定义控件
- 「jQuery知识」jQuery之知识体系汇总
- 安装APK时引发INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误的几种可能(申明:来源于网络)
- 队列(裸题)
- Java在线学习,Java学习地址
- selenium java
- API接口开发 配置、实现、测试 Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试
- XManager Enterprise
- imx6qt5中文不显示问题
- Zookeeper
- 关于两层级联菜单的构想,同过jsp,jquery,ajax实现,适合刚入门的,可以看下
- 第一行代码勘误