luogu P2776 [SDOI2007]小组队列
2024-08-29 16:17:51
题目背景
嘛,这道非常简单的给大家提供信心的省选题洛谷居然没有!
这么简单的题怎么可以没有!
给大家提升士气是义不容辞的责任!
所以我就来补一下啦..
值得一提的是,标程是我自己做的..
很渣,因为数据很水所以能AC..
大神勿喷..
题目描述
有 m 个小组, n 个元素,每个元素属于且仅属于一个小组。
支持以下操作:
push x:使元素 x 进队,如果前边有 x 所属小组的元素,x 会排到自己小组最后一个元素的下一个位置,否则 x 排到整个队列最后的位置。
pop:出队,弹出队头并输出出队元素,出队的方式和普通队列相同,即排在前边的元素先出队。
输入输出格式
输入格式:
第一行有两个正整数 n, m,分别表示元素个数和小组个数,元素和小组均从 0 开始编号。
接下来一行 n 个非负整数 Ai,表示元素 i 所在的小组。
接下来一行一个正整数 T ,表示操作数。
接下来 T 行,每行为一个操作。
输出格式:
对于每个出队操作输出一行,为出队的元素。
输入输出样例
输入样例#1:
4 2
0 0 1 1
6
push 2
push 0
push 3
pop
pop
pop
输出样例#1:
2
3
0
说明
对于30%的数据,1≤n≤100,1≤m≤10,T≤50。
对于100%的数据,1≤n≤100000,1≤m≤300,T≤100000,输入保证操作合法。
用两个队列进行模拟
q记录小组顺序
que[]记录小组内元素
#include<cstdio>
#include<queue>
using namespace std;
queue<int>que[],q;
int a[];
int main()
{
int n,m;
char s[];
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%s",s);
if(s[]=='u')
{
scanf("%d",&m);
if(que[a[m]].empty()) q.push(a[m]);
que[a[m]].push(m);
}
else if(s[]=='o')
{
printf("%d\n",que[q.front()].front());
que[q.front()].pop();
if(que[q.front()].empty()) q.pop();
}
}
return ;
}
最新文章
- 用SQL语句创建四个表并完成相关题目-10月18日更新
- W3School-CSS 尺寸 (Dimension) 实例
- 编译安装 Zend Opcache 缓存Opcache,加速 PHP
- SharePoint Server 2010 中的基本任务
- Android Studio 总结
- 浅入DNS
- jquery Ajax中的dataType简析
- http://www.cnblogs.com/draem0507/archive/2013/02/01/2889317.html
- 字符集乱码问题:ISO-8859-1和GBK
- sql server varchar(10)和 nvarchar(10)存储数据长度
- html5 读写sqlite数据库
- CSS3--阴影,渐变,背景图片
- Gridview导出成Excel
- 数据库db2错误代码大全
- ASP.NET Core 一步步搭建个人网站(2)_一键部署和用户注册登录
- 算法与数据结构(十二) 散列(哈希)表的创建与查找(Swift版)
- [Swift]LeetCode623. 在二叉树中增加一行 | Add One Row to Tree
- nginx和resin一二三
- 在统一软件开发过程中使用UML
- java批量爬取电影资源
热门文章
- An internal error occurred during: ";Launching on Tomcat 7.x";
- 聊聊、Git 常用命令
- ASP.NET Core MVC 运行所选代码生成器时出错
- 一些需要注意的ts
- openssl unicode编译以及VC++2015环境下的问题
- hdu 2141 Can you find it? (二分法)
- HTTP协议中GET、POST和HEAD的介绍
- float存储
- bzoj4418 [Shoi2013]扇形面积并
- Log4Net日志分类和自动维护