【C/C++】学生排队吃饭问题
问题:
有n个学生,学生们都在排队取餐,第个学生在L国时刻来到队尾,同一时刻来的学生编号小的在前,每个时刻当队列不为空时,排在队头的同学就可以拿到今天的中餐并离开队伍,若第个学生R团时刻不能拿到中餐,他就会离开队伍。问每个学生拿到中餐的的时刻(不能拿到的输出O)
输入描述:
第一行一个整数(1<t<100).接下来组数据,每组数据第一行一个整数n1<n≤10000)。接下来n行,每行两个整数L[i], R[i] (1 < L[i] < R[i] ≤5000).
输出描述:
每组测试数据输出一行,n个整数,每个学生拿到中餐的的时刻(不能拿到的输出0).
测试用例:
2
2
1 3
1 4
3
1 5
1 1
2 3
思路:
用time表示一个时间戳,每次服务的时候time++
读入一个学生,判断队列是否为空:
空:判断这个学生是否能服务
非空:学生入队尾;判断队头学生是否可以被服务(R[i]是否<=time)如果可以就服务,不可以就学生出队
代码:
#include <bits/stdc++.h>
using namespace std;
struct student
{
int L;
int R;
};
int main()
{
queue <student> que;
int t, n;
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
int time = 1;
for(int i = 1; i <= n; i++)
{
student tmp;
scanf("%d %d", &tmp.L, &tmp.R);
if(que.empty())
{
(tmp.R >= i)? cout << time++ : cout << 0;
cout << " ";
}
else
{
que.push(tmp);
tmp = que.front();
while (tmp.R < time)
{
que.pop();
tmp = que.front();
}
tmp = que.front();
cout << time++ << " ";
que.pop();
}
}
cout << endl;
}
}
【C/C++】学生排队吃饭问题的更多相关文章
- CCF CSP 201703-2 学生排队
博客中的文章均为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-2 学生排队 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排, ...
- CCF201703-2 学生排队 java(100分)
试题编号: 201703-2 试题名称: 学生排队 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排 ...
- CCF 2017-03-2 学生排队
CCF 2017-03-2 学生排队 题目 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整.一次调整小明可能让一位同学 ...
- ccf201703-2学生排队
问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整.一次调整小明可能让一位同学出队,向前或者向后移动一段距离后再插入队列. ...
- 201703-2 学生排队 Java
思路: 将需要移动的学生remove后再add 题目中说向前向后移动不会超过人数,也就是不会出现隔着的情况.所以不会越界. import java.util.ArrayList; import jav ...
- CCF|学生排队|Java
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Sc ...
- 洛谷P2896 [USACO08FEB]一起吃饭Eating Together
题目描述 The cows are so very silly about their dinner partners. They have organized themselves into thr ...
- 小圣求职记A:腾讯篇
本人普通985高校计算机专业研究生一枚,从9月12号开始正式找工作,一个月过去了,参加了能参加的各个互联网公司的宣讲.笔试.面试,现用两篇随笔分享所见所闻.随笔A将以腾讯为例详细展示整个过程,随笔B将 ...
- Java并发编程(八)线程间协作(上)
多线程并发执行时,不同的线程执行的内容之间可能存在一些依赖关系,比如线程一执行a()方法和c()方法,线程二执行b()方法,方法a()必须在方法b()之前执行,而方法c()必须在方法b()之后执行.这 ...
随机推荐
- 九. Go并发编程--context.Context
一. 序言 前几篇中提到 等待多个 goroutine 协作的方式可以使用WaitGroup. 但是有一种场景我们无论是使用Mutex, sync/Once,都无法满足. 场景如下 现在有一个 Ser ...
- java web 在线编辑Excel -- x-spreadsheet
--- x-spreadsheet --- 文档 https://hondrytravis.com/x-spreadsheet-doc/ <%@ page language="java ...
- 【linux系统】命令学习(四)统计命令
sort 排序 -b 忽略开头的空白符 -f 将小写字母看做为大写字母 -h 根据存储容量排序(kb mb hb )从小到大 -n 按数字排序 -o 把结果写入文件 -r 以相反的顺序来排序 -t 指 ...
- 对象池模式(Object Pool Pattern)
本文节选自<设计模式就该这样学> 1 对象池模式的定义 对象池模式(Object Pool Pattern),是创建型设计模式的一种,将对象预先创建并初始化后放入对象池中,对象提供者就能利 ...
- 发布项目到maven中央仓库
https://www.xiaominfo.com/2017/04/25/swagger-bootstrap-ui-issue-maven-central/?tdsourcetag=s_pcqq_ai ...
- UOJ #76 -【UR #6】懒癌(思维题)
UOJ 题面传送门 神仙题. orz czx,czxyyds 首先没有懒癌的狗肯定不会被枪毙,证明显然. 接下来考虑怎样计算一种局面的答案,假设 \(dp_S\) 表示对于有且仅有 \(S\) 中的狗 ...
- python12对象初
- rust Option枚举
枚举 1 fn main() { 2 let a_binding; 3 { 4 let x = 2; 5 a_binding = x * x; 6 } 7 println!("a bindi ...
- Python基础之数字类型内置方法
目录 1. 整型内置方法(int) 2. 浮点型内置方法 3. 常用操作 1. 整型内置方法(int) 用途:年龄,号码,等级等 定义: age = 18 常用操作 # 算数运算.比较运算 age = ...
- Linux-centos7设置静态IP地址
参考:https://blog.csdn.net/sjhuangx/article/details/79618865