首页 > 其他分享 >Team Queue(队列)

Team Queue(队列)

时间:2024-09-13 12:45:58浏览次数:8  
标签:typedef return 队列 long Queue int vector Team vx

#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef pair<int,int> PII;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int uint;
typedef vector<string> VS;
typedef vector<int> VI;
typedef vector<vector<int>> VVI;
vector<int> vx;
inline int mp(int x) {return upper_bound(vx.begin(),vx.end(),x)-vx.begin();}
inline int log_2(int x) {return 31-__builtin_clz(x);}
inline int popcount(int x) {return __builtin_popcount(x);}
inline int lowbit(int x) {return x&-x;}
const int N = 1e6+10;
int f[N];
bool st[1010];
void solve()
{
	int t;
	int cnt = 0;
	while(cin>>t,t)
	{
		cout<<"Scenario #"<<++cnt<<'\n';
		queue<int> q[t+1];
		
		//用q[0]表示总链
		for(int i=1;i<=t;++i)
		{
			st[i] = 0;
			int n;
			cin>>n;
			for(int j=1;j<=n;++j)
			{
				int x;
				cin>>x;
				f[x] = i;
			}
		}
		//本题的核心在于可以多次入队出队
		string s;
		while(cin>>s,s!="STOP")
		{
			if(s == "ENQUEUE") 
			{
				int x;
				cin>>x;
				if(!st[f[x]]) 
				{
					q[0].push(f[x]);
					q[f[x]].push(x);
					st[f[x]] = 1;
				}
				else
				{
					q[f[x]].push(x);
				}
			}
			else if(s == "DEQUEUE")
			{	
				//注意需要的p是根节点
				int p = q[0].front();
				cout<<q[p].front()<<'\n';
				q[p].pop();
				if(q[p].empty()) {q[0].pop();st[p] = 0;}
			}
		}
		cout<<'\n';
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T = 1;
	//cin>>T;
	while(T--)
	{
		solve();
	}
}

标签:typedef,return,队列,long,Queue,int,vector,Team,vx
From: https://www.cnblogs.com/ruoye123456/p/18412001

相关文章

  • 解决rabbitmq队列超时timeout问题【win环境】
    解决rabbitmq队列超时timeout问题【win环境】1.安装RabbitMQ-PluginscdC:\ProgramFiles\RabbitMQServer\rabbitmq_server-3.11.3\sbinrabbitmq-pluginsenablerabbitmq_management浏览器打开http://localhost:15672来访问web端的管理界面,用户名:guest,密码:guest进入管理......
  • 数据结构——队列
    1、定义从栈的学习我们知道栈是只允许在一端进行插入或删除操作的线性表。而队列:是只允许在一端进行插入在另一端删除的线性表。在生活中比如说到饭堂排队打饭,一端进一端出,这就是队列。2、队列顺序实现2.1、队列的基本形式typedefintElemtype;//需要时可以改为自己需要......
  • 等待唤醒机制和阻塞队列
     1.等待唤醒机制由于线程的随机调度,可能会出现“线程饿死”的问题:也就是一个线程加锁执行,然后解锁,其他线程抢不到,一直是这个线程在重复操作voidwait()当前线程等待,直到被其他线程唤醒voidnotify()随机唤醒单个线程voidnotifyAll()唤醒所有线程等待(wa......
  • 【项目实战】Redis使用场景之基于Redis实现分布式队列
    一、什么是分布式队列分布式队列,指在分布式系统中用于协调不同服务或组件之间的消息传递和任务调度的队列。分布式队列,允许多个生产者将任务放入队列,而多个消费者可以从队列中取出任务进行处理。分布式队列,在微服务架构、任务调度、消息传递等场景中非常有用。二、为什......
  • 消息队列架构解析:从设计到实现的全面解析
    消息队列是现代分布式系统中常见的核心组件之一,广泛用于解耦系统、提升系统性能、实现异步通信和处理高并发。通过消息队列,应用程序可以在不同服务之间高效地传递数据或命令,避免同步操作中的阻塞问题。本文将通过详细的架构图及深入的分析,全面解析消息队列的工作机制、常见的消息队......
  • RabbitMQ的队列模式你真的懂吗
    0前言官网描述六类工作队列模式:简单队列模式:最简单的工作队列,一个消息生产者,一个消息消费者,一个队列。另称点对点模式工作模式:一个消息生产者,一个交换器,一个消息队列,多个消费者。也称点对点模式发布/订阅模式:无选择接收消息,一个消息生产者,一个交换器,多个消息队列,多个消费者......
  • 单调队列优化 DP
    单调队列优化DP回忆单调队列的作用,\(O(n)\)求出每一个大小为\(K\)的窗口中的最大、最小值。以最大值为例,我们可以得到如下DP转移方程:\[dp[i]=\max(val[j])+base[i],i-j\leqK\]其中\(base[i]\)是一个仅与\(i\)有关的式子,不受\(j\)影响,且可以预处理得到;而\(val[j]......
  • 《守望先锋2》游戏启动时黑屏弹窗“找不到steam_api.dll”该怎么处理?守望先锋2游戏崩
    在启动《守望先锋2》时,出现黑屏弹窗,提示“找不到steam_api.dll”,这给玩家带来极大困扰。别慌张,这种状况是能够处理的。可能需要重新获取该文件,或者检查相关设置是否正确。具体要怎么操作呢?本篇将为大家带来《守望先锋2》游戏启动时黑屏弹窗“找不到steam_api.dll”该怎么处理的......
  • C++模拟实现stack和queue(容器适配器)
    适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。简单理解,将模板参数给成容器,就是容器适配器,写成参数的容器的各种接口,均满足需要。#include<list>#includ......
  • 单调队列优化 dp
    1.概念单调队列优化的本质是借助单调性,及时排除不可能的决策,保持候选集合的秩序性。2.例题P1714切蛋糕题目大意:给定一个序列,找出长度不超过\(m\)的连续子序列,使得子序列中所有数的和最大。思路:要求区间和,首先求出前缀和,然后考虑朴素dp,不难想到用\(dp[i]\)表示包含......