【NOIP2021普及组复赛】题3:网络连接(network)

【21CSPJ普及组】网络连接(network) 啊那可恶的输入……实现用map+sscanf 阅读详情

题3:网络连接(network)

【题目描述】

TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个 协议,还原一个简化后的网络连接场景。

在本问题中,计算机分为两大类:服务机(Server)和客户机(Client)。服务机负责建立连接,客户机负责加入连接。

需要进行网络连接的计算机共有 n
台,编号为 1∼n
,这些机器将按编号递增的顺 序,依次发起一条建立连接或加入连接的操作。

每台机器在尝试建立或加入连接时需要提供一个地址串。服务机提供的地址串表示它尝试建立连接的地址,客户机提供的地址串表示它尝试加入连接的地址。

一个符合规范的地址串应当具有以下特征:

1、必须形如 a.b.c.d:e 的格式,其中 a,b,c,d,e 均为非负整数;

2、0 ≤ a,b,c,d ≤ 255,0 ≤ e ≤ 65535;

3、a,b,c,d,e 均不能含有多余的前导 0
。

相应地,不符合规范的地址串可能具有以下特征:

1、不是形如 a.b.c.d:e 格式的字符串,例如含有多于 3
个字符.或多于 1
个字符:等情况;

2、整数 a,b,c,d,e中某一个或多个超出上述范围;

3、整数 a,b,c,d,e中某一个或多个含有多余的前导0
。

例如,地址串192.168.0.255:80是符合规范的,但192.168.0.999:80、192.168.00.1:10 、192.168.0.1:088 、192:168:0:1.233 均是不符合规范的。

如果服务机或客户机在发起操作时提供的地址串不符合规范,这条操作将被直接忽略。

在本问题中,我们假定凡是符合上述规范的地址串均可参与正常的连接,你无需考 虑每个地址串的实际意义。

由于网络阻塞等原因,不允许两台服务机使用相同的地址串,如果此类现象发生, 后一台尝试建立连接的服务机将会无法成功建立连接;除此之外,凡是提供符合规范的 地址串的服务机均可成功建立连接。

如果某台提供符合规范的地址的客户机在尝试加入连接时,与先前某台已经成功建 立连接的服务机提供的地址串相同,这台客户机就可以成功加入连接,并称其连接到这 台服务机;如果找不到这样的服务机,则认为这台客户机无法成功加入连接。

请注意,尽管不允许两台不同的服务机使用相同的地址串,但多台客户机使用同样 的地址串,以及同一台服务机同时被多台客户机连接的情况是被允许的。

你的任务很简单:在给出每台计算机的类型以及地址串之后,判断这台计算机的连接情况。

【输入文件】

第 1 行,一个正整数 n 。

接下来 n 行,每行 2 个字符串 op,ad ,按照编号从小到大给出每台计算机的类型及地址串。

其中 op 保证为字符串 Server 或 Client 之一,ad 为一个长度不超过 25 的,仅由数字、字符 . 和字符 : 组成的非空字符串。

每行的两个字符串之间用恰好一个空格分隔开,每行的末尾没有多余的空格。

【输出文件】

输出共 n 行,每行一个正整数或字符串表示第 i 台计算机的连接状态。其中:

如果第 i 台计算机为服务机,则:

  1. 如果其提供符合规范的地址串且成功建立连接,输出字符串 OK 。

  2. 如果其提供符合规范的地址串,但由于先前有相同地址串的服务机而无法成功 建立连接,输出字符串 FAIL 。

  3. 如果其提供的地址串不是符合规范的地址串,输出字符串 ERR 。

如果第 i 台计算机为客户机,则:

  1. 如果其提供符合规范的地址串且成功加入连接,输出一个正整数表示这台客户 机连接到的服务机的编号。

  2. 如果其提供符合规范的地址串,但无法成功加入连接时,输出字符串 FAIL 。

  3. 如果其提供的地址串不是符合规范的地址串,输出字符串 ERR 。

【输入样例1】

5
Server 192.168.1.1:8080
Server 192.168.1.1:8080
Client 192.168.1.1:8080
Client 192.168.1.1:80
Client 192.168.1.1:99999

【输出样例1】

OK
FAIL
1
FAIL
ERR

【样例1说明】

计算机 1 为服务机,提供符合规范的地址串 192.168.1.1:8080 ,成功建立连接;

计算机 2 为服务机,提供与计算机 1 相同的地址串,未能成功建立连接;

计算机 3 为客户机,提供符合规范的地址串 192.168.1.1:8080 ,成功加入连接, 并连接到服务机 1;

计算机 4 为客户机,提供符合规范的地址串 192.168.1.1:80 ,找不到服务机与其连接;

计算机 5 为客户机,提供的地址串 192.168.1.1:99999 不符合规范。

【输入样例2】

10
Server 192.168.1.1:80
Client 192.168.1.1:80
Client 192.168.1.1:8080
Server 192.168.1.1:80
Server 192.168.1.1:8080
Server 192.168.1.999:0
Client 192.168.1.1.8080
Client 192.168.1.1:8080
Client 192.168.1.1:80
Client 192.168.1.999:0

【输出样例2】

OK
1
FAIL
FAIL
OK
ERR
ERR
5
1
ERR

【数据规模】

在这里插入图片描述

“性质 1 ”为:保证所有的地址串均符合规范;

“性质 2 ”为:保证对于任意两台不同的计算机,如果它们同为服务机或者同为客 户机,则它们提供的地址串一定不同;

“性质 3 ”为:保证任意一台服务机的编号都小于所有的客户机;

“性质 4 ”为:保证所有的地址串均形如 a.b.c.d:e 的格式,其中 a,b,c,d,e 均为不超过 109
且不含有多余前导 0
的非负整数;

“性质 5 ”为:保证所有的地址串均形如 a.b.c.d:e 的格式,其中 a,b,c,d,e 均为只含有数字的非空字符串。

对于 100% 的数据,保证 1≤n≤1000 。

【代码如下】:

#include <bits/stdc++.h>
using namespace std;
int n;
bool Check(string s) {
  long long a, b, c, d, port;
  if (sscanf(s.c_str(), "%lld.%lld.%lld.%lld:%lld", &a, &b, &c, &d, &port) != 5)  return false;
  if (a < 0 || a > 255 || b < 0 || b > 255 || c < 0 || c > 255 || d < 0 || d > 255 || port < 0 || port > 65535)  return false;
  stringstream ss;
  ss << a << '.' << b << '.' << c << '.' << d << ':' << port;
  return ss.str() == s;
}
map<string, int> mp;
string op, ad;
int main(int argc, char const *argv[]) {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> op >> ad;
    if (!Check(ad)) { cout << "ERR\n"; continue; }
    if (op[0] == 'S') {
      if (mp[ad]) cout << "FAIL\n";
      else mp[ad] = i, cout << "OK\n";
    } else {
      if (!mp.count(ad)) cout << "FAIL\n";
      else cout << mp[ad] << '\n';
    }
  }
  return 0;
}
2076:【21CSPJ普及组】网络连接(network) 2076:【21CSPJ普及组】网络连接(network) 时间限制: 1000 ms 内存限制: 524288 KB 提交数: 775 通过数: 272 【题目描述】 TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个 协议,还原一个简化后的网络连接场景。 在本问题中,计算机分为两大类:服务机(Server)和客户机(Client)。服务机负责建立连接,客户机负责加入连接。 需要进行网络连接的计算机共有nn台,编号为1∼n1∼n,这... 阅读详情

相关推荐

2021年CSP-J复赛真题解析

如果某台提供符合规范的地址的客户机在尝试加入连接时,与先前某台已经成功建立连接的服务机提供的地址串相同,这台客户机就可以成功加入连接,并称其连接到这台服务机;请注意,尽管不允许两台不同的服务机使用相同的地址串,但多台客户机使用同样的地址串,以及同一台服务机同时被多台客户机连接的情况是被允许的。2 x : 这是第二种操作,假设 H 老师按照上面的伪代码对a数组进行排序,你需要告诉H老师原来a 的第 x 个元素,也就是 ax,在排序后的新数组所处的位置。保证1 ≤ x ≤ n, 1 ≤ v ≤ 10^9。

weixin_42358969的博客 2731

信息学奥赛一本通 2076:【21CSPJ普及组】网络连接(network) | 洛谷 P7911 [CSP-J 2021] 网络连接

如果输入的ip是服务机,那么先查找该服务机是否存在(在数组a上做顺序查找,看能否找到)。1、必须形如a.b.c.de的格式,其中a,b,c,d,e均为非负整数;如果输入的ip是客户机,那么根据ip串在数组a上查找是否存在该字符串。对于每个输入的ip串,先判断该串是否合法,如不合法,输出ERR。我们一条一条讨论,每次讨论的情况不要贪多,避免逻辑混乱。由于n最大为1000,即便每次都做顺序查找,整体复杂度为。3、a,b,c,d,e均不能含有多余的前导0。指ip为s的服务机的编号。...

君义NOIP的博客 2325

CSP-J 2021 入门组/普及组

文章目录整体难度分析T1 分糖果T1分析T2 插入排序T2分析1. 常规解法2. 黑科技 pb_dsT3 网络连接T3分析T4 小熊的果篮T4分析 整体难度分析 整体来说这一场 CSP 的比赛难度并不高,四道题基本都是模拟题,至少有 310310310 分是纯暴力可以直接获得的 但是对代码量和细节问题的处理要求相对高一些,在 OI 的比赛模式中,很容易因为踩了一个坑导致分数非常低 整体来说难度不高,题目类型更加偏向于 CF 类的简单题 T1 分糖果 【题目背景】 红太阳幼儿园的小朋友们开始分糖果啦! 【题目

jnxxhzz的博客 1万+

CSP-J 2021复赛真题解析

TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Client服务机负责建立连接,客户机负责加入连接。需要进行网络连接的计算机共有n台,编号为1∼n,这些机器将按编号递增的顺序,依次发起一条建立连接或加入连接的操作。每台机器在尝试建立或加入连接时需要提供一个地址串。服务机提供的地址串表示它尝试建立连接的地址,客户机提供的地址串表示它尝试加入连接的地址。

RIPKEY的博客 1022

【CSP-J 2021】网络连接

【CSP-J 2021】网络连接

weixin_60849605的博客 976

CSP-J 2021普及组题解T3:网络连接

CPS-J2021普及组 T3.网络连接 模拟+哈希

少儿编程乔老师 3037

信息学奥赛中的STL(标准模板库)---(2022.09.30--2024.12.31)

信息学奥赛中的STL(标准模板库)--2022.09.30

青少年趣味编程 4118

使用JAVA代码转word文档之动态生成数据填充(图文详解)

今天跟公司对接了业务,根据业务需求,乙方需求文档是word格式的,而我们的数据是动态数据,每生成一份数据,就要以word的形式给乙方一份邮件!这就给了我们的工作一定的难度和挑战! 通过阅读资料,团队的帮助以及自我测试,终于实现了这个功能!因为在搜索资料方面,发现各位博主讲的比较模糊,自己碰到了很多bug,浪费了很多宝贵的时间,所以今天写了这篇文章,希望对自己以后或者他人有所帮助! 操作第一步:先准...

huaiyan 7719

【网络通讯】TCP/IP协议

01、文章目录 文章目录01、文章目录02、TCP/IP协议03、协议分类04、TCP/IP 协议模型图05、TCP/IP三次握手与四次挥手5.1 三次握手5.2 四次挥手5.3 四次挥手面试备考06、有限状态机(图)07、TCP/IP报文格式08、附录 02、TCP/IP协议 人与人之间交流需要介质,这种介质我们统称为语言。 比如:美国人与美国人交流需要英文(English),中国人与中国人则是中文(Chinese). 既然如此,那么计算机与因特网呢? 传输控制协议(TCP,Transmission C

Cain Xcy的博客 611

别光看Demo了!用UE5 Lyra框架快速搭建你的多人对战游戏原型(含完整配置流程)

本文详细介绍了如何利用UE5 Lyra框架快速搭建多人对战游戏原型,包含完整的配置流程和实战案例。Lyra作为可直接二次开发的游戏模板,内置了GAS技能系统、Enhanced Input输入控制等核心功能,大幅缩短开发周期。通过替换角色模型、调整武器数值和配置新地图规则,开发者可在48小时内完成科幻团队竞技游戏原型的搭建。

weixin_28717411的博客 455

Android车载应用开发:Kotlin与Automotive OS深度实践

Android Automotive OS(AAOS)是Google专为车辆设计的操作系统,直接运行于车机硬件,提供完整的车载信息娱乐系统(IVI)。与Android Auto不同,AAOS允许开发者深度集成车辆硬件功能,如空调控制和传感器数据读取,同时遵循严格的驾驶安全规范。Kotlin作为开发语言,具备空安全设计、扩展函数和协程支持等优势,简化了开发流程。开发环境配置包括Android Studio、AAOS模拟器和Gradle配置,核心组件如CarAppService、Screen与模板系统,以及车辆

时小雨的专栏 3443

C++ 2019-2022 CSP_J 复赛试题横向维度分析(中)

从第三题开始,难度在逐步增加,需要有良好的算法和数据结构基础。

y6123236的专栏 406

300Kg载重履带式无人车底盘定制开发技术详解

通过精准的需求分析、科学的方案设计、严格的研发与测试以及完善的交付与培训流程,可以打造出符合客户需求的优质产品。300Kg载重履带式无人车底盘的定制开发,旨在打造一款承载能力强、行驶稳定、适应复杂地形的无人运输平台。根据应用场景选择合适的动力源,并进行性能优化,确保无人车在载重情况下仍能保持稳定的行驶速度和动力输出。根据需求分析结果,设计无人车底盘的总体方案,包括动力系统选择、结构设计、负载管理策略等。进行详细的研发工作,包括零部件的选型与采购、样机的制作与调试等。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 958

【题解】 [CSP-J 2021] 网络连接

洛谷7911题解,也是CSP-J2021的T3,一道小有难度的模拟题,献出自己的一点理解,快来看ヾ(•ω•`)o

YLCHUP的博客 865

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 264

SpringBoot整合JWT实战:从零构建无状态认证系统,详解Token生成、验证与安全最佳实践

JWT在SpringBoot中的实现与应用 摘要:本文介绍了JWT(JSON Web Token)的基本概念、与Session机制的对比,以及SpringBoot项目中JWT的整合实现。JWT由Header、Payload和Signature三部分组成,具有无状态、跨域支持等优势。文章详细展示了如何在SpringBoot项目中配置JWT环境,封装JWT工具类来实现Token的生成、解析和验证功能,包括密钥管理、自定义声明、签名验证等核心操作。通过对比表格和生活化比喻,帮助读者理解JWT与传统Session的

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1772

CSP-J 2021-网络连接

模拟

weixin_60869516的博客 1302

abapGit 安装与初始化完整指南:从 on-premise 到 SAP BTP ABAP environment 的一条龙实践

本文为ABAP开发者提供abapGit从安装到团队协作的完整指南。内容涵盖社区版ZABAPGIT的on-premise安装、Eclipse ADT插件配置、BTP环境使用及常见网络问题处理。重点包括:获取最新构建的安装步骤、EN语言环境的重要性、ADT插件安装方法、以及如何实现on-premise与BTP间的代码迁移。文中特别强调企业环境下代理设置、证书配置等注意事项,并提供实际操作案例,如将RAP业务对象迁移到BTP环境。文末附有可复用的实施清单,帮助开发者快速落地abapGit。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 411

P7911 [CSP-J 2021] 网络连接

【代码】P7911 [CSP-J 2021] 网络连接。

Ray.C.L的博客 568

Unity 热更新技术 |(六)xLua框架学习最新系列完整教程

开始学习热更新方面系列知识,就从这一篇开始吧! 本系列教程 会从热更新基本概念出发,详细介绍热更新相关的全套知识点。 如热更新技术基本原理、热更新主流方案、AssetBundle系列教程、Lua语言编程、Lua与Unity交互教程、Xlua框架使用、热更新实战教程等方面。 热更新作为一个开发者必备技能,如果想学习的话,可以从现在开始了哦~ 接下来先从XLua学习使用 开始学习吧!

努力前行,总会成为自己心中的那道光 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【题解】【洛谷P7911】【模拟】—— [CSP-J 2021] 网络连接

前置知识:string字符串的应用,map映射和常用相关函数。

Pantheraonca的博客 1546

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[CSP-J 2021] 网络连接

TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Client服务机负责建立连接,客户机负责加入连接。需要进行网络连接的计算机共有 n 台,编号为 1∼n,这些机器将按编号递增的顺序,依次发起一条建立连接或加入连接的操作。每台机器在尝试建立或加入连接时需要提供一个地址串。服务机提供的地址串表示它尝试建立连接的地址,客户机提供的地址串表示它尝试加入连接的地址。

wo_ai_luo_的博客 1015

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【计算机网络】TCP|IP协议

TCP/IP协议是当今互联网世界中最重要的网络协议之一,它是网络通信的基石,为数据在网络中的传输提供了可靠性和有效性。本文将深入探讨TCP/IP协议的重要性、基本原理以及其在网络通信中的作用。TCP/IP(Transmission Control Protocol/Internet Protocol)协议是一组通信协议,用于在计算机网络中进行数据传输和通信。它是互联网的基础协议,支持各种不同类型的计算机和网络设备之间的通信。TCP/IP协议被设计为开放式标准,因此它成为了全球互联网的基础通信协议。

double222222的博客 3826

CSPJ2021C. 网络连接(network)

CSPJ2021C. 网络连接(network)

yaosichengalpha的博客 673

CSP-J2021第二轮 解题分析

1.分糖果 算法分析 糖果总数k属于[l,r][l, r][l,r],其中l>=nl >= nl>=n,每个小朋友最少会分到⌊l/n⌋\lfloor l / n \rfloor⌊l/n⌋块糖果。分完这⌊l/n⌋\lfloor l / n \rfloor⌊l/n⌋块糖果后,还剩余[l−n∗⌊l/n⌋,r−n∗⌊l/n⌋][l - n * \lfloor l / n \rfloor, r - n * \lfloor l / n \rfloor][l−n∗⌊l/n⌋,r−n∗⌊l/n⌋]

zhendong 4082
上一篇: 【NOIP2021普及组复赛】题2:插入排序(sort)
下一篇: 【NOIP2021普及组复赛】题4:小熊的果篮(fruit)
lpstudio
博客等级 码龄16年 1266粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lpstudio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值