蓝桥杯历届真题 #分布式队列 (Java,C++)

文章目录

  • 题目解读
  • [蓝桥杯 2024 省 Java B] 分布式队列
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
  • 思路
  • 完整代码


题目解读

题目链接

[蓝桥杯 2024 省 Java B] 分布式队列

题目描述

小蓝最近学习了一种神奇的队列:分布式队列。简单来说,分布式队列包含 N N N 个节点(编号为 0 0 0 N − 1 N−1 N1,其中 0 0 0 号为主节点),其中只有一个主节点,其余为副节点。主、副节点中都各自维护着一个队列,当往分布式队列中添加元素时都是由主节点完成的(每次都会添加元素到队列尾部);副节点只负责同步主节点中的队列。可以认为主/副节点中的队列是一个长度无限的一维数组,下标为 0 , 1 , 2 , 3 , … 0,1,2,3,\dots 0,1,2,3,,同时副节点中的元素的同步顺序和主节点中的元素添加顺序保持一致。

由于副本的同步速度各异,因此为了保障数据的一致性,元素添加到主节点后,需要同步到所有的副节点后,才具有可见性。

给出一个分布式队列的运行状态,所有的操作都按输入顺序执行。你需要回答在某个时刻,队列中有多少个元素具有可见性。

输入格式

第一行包含一个整数 N N N,表示节点个数。

接下来包含多行输入,每一行包含一个操作,操作类型共有以下三个:add、sync 和 query,各自的输入格式如下:

  1. add element:表示这是一个添加操作,将元素 e l e m e n t element element 添加到队列中;

  2. sync follower_id:表示这是一个同步操作, f o l l o w e r _ i d follower\_id follower_id 号副节点会从主节点中同步下一个自己缺失的元素;

  3. query:查询操作,询问当前分布式队列中有多少个元素具有可见性。

输出格式

对于每一个 query 操作,输出一行,包含一个整数表示答案。

样例 #1

样例输入 #1

3
add 1
add 2
query
add 1
sync 1
sync 1
sync 2
query
sync 1
query
sync 2
sync 2
sync 1
query

样例输出 #1

0
1
1
3

提示

【样例说明】

执行到第一个 query 时,队列内容如下:

  • 节点 0 0 0 [ 1 , 2 ] [1,2] [1,2]
  • 节点 1 1 1 [ ] [] []
  • 节点 2 2 2 [ ] [] []

两个副节点中都无元素,因此答案为 0 0 0

执行到第二个 query 时,队列内容如下:

  • 节点 0 0 0 [ 1 , 2 , 1 ] [1,2,1] [1,2,1]
  • 节点 1 1 1 [ 1 , 2 ] [1,2] [1,2]
  • 节点 2 2 2 [ 1 ] [1] [1]

只有下标为 0 0 0 的元素被所有节点同步,因此答案为 1 1 1

执行到第三个 query 时,队列内容如下:

  • 节点 0 0 0 [ 1 , 2 , 1 ] [1,2,1] [1,2,1]
  • 节点 1 1 1 [ 1 , 2 , 1 ] [1,2,1] [1,2,1]
  • 节点 2 2 2 [ 1 ] [1] [1]

只有下标为 0 0 0 的元素被所有节点同步,因此答案为 1 1 1

执行到第四个 query 时,队列内容如下:

  • 节点 0 0 0 [ 1 , 2 , 1 ] [1,2,1] [1,2,1]
  • 节点 1 1 1 [ 1 , 2 , 1 ] [1,2,1] [1,2,1]
  • 节点 2 2 2 [ 1 , 2 , 1 ] [1,2,1] [1,2,1]

三个元素都被所有节点同步,因此答案为 3 3 3

【评测用例规模与约定】

设输入的操作数为 q q q

对于 30 % 30\% 30% 的评测用例: 1 ≤ q ≤ 100 1\leq q \leq 100 1q100

对于 100 % 100\% 100% 的评测用例: 1 ≤ q ≤ 2000 1\leq q\leq 2000 1q2000 1 ≤ N ≤ 10 1\leq N\leq 10 1N10 1 ≤ f o l l o w e r _ i d < N 1\leq follower\_id<N 1follower_id<N 0 ≤ e l e m e n t ≤ 1 0 5 0\leq element\leq10^5 0element105

数据保证执行同步操作时, f o l l o w e r _ i d follower\_id follower_id 号副节点一定缺失元素

思路

由于最多有10个结点,可以采用暴力的方法
使用数组进行模拟
数组的下标代表第几个队列
数组的大小代表当前队列有几个元素
由于同步元素是同步主队列的下一个元素,因此我们不需要关心具体的元素值,只需要关心有几个元素即可
如果是add操作,我们只需要让其指定的队列元素+1即可,注意:要注意同步的个数不能超过主队列元素个数
查询的时候遍历每个队列,其最小的值就是可见的元素数量

完整代码

#include<bits/stdc++.h>using namespace std;const int N = 15;int cnt[N];int n;int check(){int res=2000;for(int i=1; i<n; i++){res=min(cnt[i],res);}return res;
}int main(){cin>>n;string op;int num;while(cin>>op){//主队列用0号结点if(op=="add"){cin>>num;cnt[0]++;}else if(op=="sync"){cin>>num;if(cnt[num]<cnt[0])cnt[num]++;}else{cout<<check()<<endl;}}return 0;
}
import java.util.Scanner;class Main{static int N =15;static int cnt[] = new int[N];static Scanner sc = new Scanner(System.in);static int n =sc.nextInt();public static void main(String[] args) {String op;int num;while(sc.hasNext()){op=sc.next();if(op.equals("add")){num=sc.nextInt();cnt[0]++;}else if(op.equals("sync")){num=sc.nextInt();if(cnt[num]<cnt[0])cnt[num]++;}else{System.out.println(check());}}}static int check(){int res=2000;for(int i=1; i<n; i++){res=Math.min(cnt[i],res);}return res;}
}

🌻编写本篇文章目的是笔者想以输出的形式进行学习,顺便记录学习点滴🌻

🌹 如果本篇文章对你有帮助的话那就点个赞吧👍🌹

😇 本篇文章可能存在多处不足,如有修改意见,可以私信或者评论我哦 😇


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/65619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PySide6 Qt for Python Qt Quick参考网址

Qt QML BOOK&#xff1a; 《Qt for Python》 -Building an Application https://www.qt.io/product/qt6/qml-book/ch19-python-build-app#signals-and-slots Qt for Python&#xff1a;与C版本的差异即BUG处理&#xff08;常见的DLL文件确实的问题等&#xff09; Qt for Pyt…

如何选择 Dockerfile 的放置方式

是否将 Dockerfile 放在项目根目录下还是为每个应用服务单独创建 Dockerfile&#xff0c;取决于项目架构和使用场景。以下是针对不同项目类型的最佳实践和推荐方式&#xff1a; 一、单体应用项目 项目特点 项目是一个单体应用&#xff0c;只有一个运行环境&#xff0c;例如&a…

如何稳定使用 O1 / O1 Pro,让“降智”现象不再困扰?

近期&#xff0c;不少朋友在使用 O1 或 O1 Pro 模型时&#xff0c;都会碰到“降智”或“忽高忽低”的智力波动&#xff0c;比如无法识图、无法生成图片、甚至回答准确度也不稳定。面对这些问题&#xff0c;你是不是也感到头疼呢&#xff1f; 为了找到更可靠的解决办法&#xf…

用户界面的UML建模11

然而&#xff0c;在用户界面方面&#xff0c;重要的是要了解《boundary》类是如何与这个异常分层结构进行关联的。 《exception》类的对象可以作为《control》类的对象。因此&#xff0c;《exception》类能够聚合《boundary》类。 参见图12&#xff0c;《exception》Database…

稀疏编码 (Sparse Coding) 算法详解与PyTorch实现

稀疏编码 (Sparse Coding) 算法详解与PyTorch实现 目录 稀疏编码 (Sparse Coding) 算法详解与PyTorch实现1. 稀疏编码 (Sparse Coding) 算法概述1.1 稀疏表示1.2 稀疏编码的优势2. 稀疏编码的核心技术2.1 稀疏编码的目标2.2 稀疏编码的优化2.3 基向量的学习3. PyTorch实现稀疏编…

记录一次面试中被问到的问题 (HR面)

文章目录 一、你对公司的了解多少二、为什么对这个岗位感兴趣三、不能说的离职原因四、离职原因高情商回复五、你的核心优势是什么六、你认为你比其他面试候选人的优势是什么七、不要提及情感 一、你对公司的了解多少 准备要点&#xff1a; 在面试前&#xff0c;对公司进行充分…

uniapp获取安卓与ios的唯一标识

uniapp获取安卓与ios的唯一标识 代码如下&#xff1a; const info uni.getSystemInfoSync(); const platform info.platform; // 手机安卓还是苹果if (info.platform ios) {// iosconsole.log(iOS 设备唯一标识:, info.deviceId);} else{//安卓console.log(系统信息:, use…

前端 图片上鼠标画矩形框,标注文字,任意删除

效果&#xff1a; 页面描述&#xff1a; 对给定的几张图片&#xff0c;每张能用鼠标在图上画框&#xff0c;标注相关文字&#xff0c;框的颜色和文字内容能自定义改变&#xff0c;能删除任意画过的框。 实现思路&#xff1a; 1、对给定的这几张图片&#xff0c;用分页器绑定…

前端学习汇总

一、打包工具 1.1、vite vite&#xff1a;vite -- 开发环境 热更新_vite 热更新-CSDN博客 1.2、webpack 常用loader&#xff1a;webpack基础---常用loader_webpack 常用loader-CSDN博客 loader&#xff1a;webpack4和webpack5区别1---loader_webpack4与webpack5处理图片的…

ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现

ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现 目录 ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现1. ARIMA模型概述1.1 时间序列预测1.2 ARIMA的优势2. ARIMA的核心技术2.1 自回归 (AR)2.2 差分 (I)2.3 移动平…

如果商品信息更新,爬虫会失效吗?

当商品信息更新时&#xff0c;爬虫是否失效取决于更新的具体内容。以下是一些可能影响爬虫的因素&#xff1a; 可能导致爬虫失效的情况 HTML结构变化&#xff1a;如果 yiwugo 平台更新了商品详情页面的 HTML 结构&#xff0c;比如改变了元素的标签、类名或 ID&#xff0c;那么…

Java调用外部接口有哪些方式

1.有哪些&#xff1f; 1.HttpURLConnection 1.介绍 1.这是Java标准库提供的一个类&#xff0c;用于发送HTTP请求和接收响应 2.它不需要额外的依赖&#xff0c;但是API相对底层&#xff0c;编写代码时需要处理很多细节&#xff0c;如设置请求头、处理连接和流等 2.代码示例…

pandas系列----DataFrame简介

DataFrame是Pandas库中最常用的数据结构之一&#xff0c;它是一个类似于二维数组或表格的数据结构。DataFrame由多个列组成&#xff0c;每个列可以是不同的数据类型&#xff08;如整数、浮点数、字符串等&#xff09;。每列都有一个列标签&#xff08;column label&#xff09;…

安装完docker后,如何拉取ubuntu镜像并创建容器?

1. 先docker拉取ubuntu镜像 docker search ubuntu #搜索ubuntu 镜像 docker pull ubuntu:22.04 #拉取ubuntu 镜像 docker images #下载完成后&#xff0c;查看已经下载的镜像 docker run --name ubuntu_container -dit ubuntu:22.04 /bin/bash # docker container -l 2.…

Qt监控系统远程网络登录/请求设备列表/服务器查看实时流/回放视频/验证码请求

一、前言说明 这几个功能是近期定制的功能&#xff0c;也非常具有代表性&#xff0c;核心就是之前登录和设备信息都是在本地&#xff0c;存放在数据库中&#xff0c;数据库可以是本地或者远程的&#xff0c;现在需要改成通过网络API请求的方式&#xff0c;现在很多的服务器很强…

详细解释 Vue 中的 h 函数和 render 函数:

Vue中的h函数和render函数是Vue中非常重要的函数&#xff0c;对Vue有着不可以或缺的作用&#xff0c;接下来让我们了解一下&#xff01; // 1. h 函数的基本使用 /*** h 函数是 createVNode 的别名&#xff0c;用于创建虚拟 DOM 节点&#xff08;VNode&#xff09;* h 函数参数…

结构型模式3.组合模式

结构型模式 适配器模式&#xff08;Adapter Pattern&#xff09;桥接模式&#xff08;Bridge Pattern&#xff09;组合模式&#xff08;Composite Pattern&#xff09;装饰器模式&#xff08;Decorator Pattern&#xff09;外观模式&#xff08;Facade Pattern&#xff09;享元…

服务器攻击方式有哪几种?

随着互联网的快速发展&#xff0c;网络攻击事件频发&#xff0c;已泛滥成互联网行业的重病&#xff0c;受到了各个行业的关注与重视&#xff0c;因为它对网络安全乃至国家安全都形成了严重的威胁。面对复杂多样的网络攻击&#xff0c;想要有效防御就必须了解网络攻击的相关内容…

Transformer 中缩放点积注意力机制探讨:除以根号 dk 理由及其影响

Transformer 中缩放点积注意力机制的探讨 1. 引言 自2017年Transformer模型被提出以来&#xff0c;它迅速成为自然语言处理&#xff08;NLP&#xff09;领域的主流架构&#xff0c;并在各种任务中取得了卓越的表现。其核心组件之一是注意力机制&#xff0c;尤其是缩放点积注意…

[python3]Excel解析库-XlsxWriter

XlsxWriter 是一个用于创建 Excel .xlsx 文件的 Python 库&#xff0c;它允许你编写程序来生成 Excel 文件&#xff0c;而无需实际运行 Microsoft Excel 应用程序。XlsxWriter 支持写入数据、应用格式化、插入图表和图形等多种功能&#xff0c;并且可以处理较大的数据集。它是一…