先认清任务,再讨论算法
2021 CSP-J 第二轮 T3|网络连接
一、完整题目
源程序文件:
network.cpp输入文件:
network.in 输出文件:network.out时间限制:1 秒 内存限制:512 MiB
测试点:20 个等分点,每点 5 分
题目描述
TCP/IP 协议是网络通信领域的一项重要协议。本题还原一个简化后的网络连接场景。
计算机分为服务机 Server 和客户机 Client。共有 n 台计算机,编号为 1~n,按编号递增顺序依次发起建立连接或加入连接的操作。每台计算机都提供一个地址串。
一个符合规范的地址串应具有以下特征:
- 必须形如
a.b.c.d:e,其中a,b,c,d,e均为非负整数; 0≤a,b,c,d≤255,0≤e≤65535;- 五个整数都不能含有多余的前导 0。
不符合规范的情况包括但不限于:点号或冒号数量不正确、某一段为空、某个整数越界、某个整数含有多余前导 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 均不合法。若一台计算机提供的地址不合法,这次操作会被直接忽略。本题假定所有符合规范的地址都能参与正常连接,不必考虑地址的实际意义。
不允许两台服务机使用相同地址。若某地址已经被此前的服务机成功建立,后一台同地址服务机建立失败;除此之外,合法地址的服务机都能成功建立连接。
若合法地址的客户机与此前某台成功建立连接的服务机地址相同,客户机成功连接到该服务机;否则连接失败。多台客户机可以使用同一地址,同一服务机也可以同时被多台客户机连接。
请判断每台计算机的连接状态。
输入格式
从文件 network.in 中读入数据。
第一行是正整数 n。
接下来 n 行,每行两个字符串 op,ad。op 保证是 Server 或 Client;ad 是长度不超过 25、只由数字、. 和 : 组成的非空字符串。每行两个字符串之间恰好有一个空格,行末没有多余空格。
输出格式
输出到文件 network.out 中,共 n 行。
若第 i 台计算机是服务机:
- 地址合法且成功建立连接,输出
OK; - 地址合法但已有同地址服务机,输出
FAIL; - 地址不合法,输出
ERR。
若第 i 台计算机是客户机:
- 地址合法且成功加入连接,输出所连接服务机的编号;
- 地址合法但找不到对应服务机,输出
FAIL; - 地址不合法,输出
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
OK
FAIL
1
FAIL
ERR
第 1 台服务机登记成功;第 2 台与第 1 台地址重复;第 3 台连接到服务机 1;第 4 台找不到对应服务机;第 5 台端口超过 65535,地址非法。
样例 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
OK
1
FAIL
FAIL
OK
ERR
ERR
5
1
ERR
附加样例
- 样例 3:见
network/network3.in与network/network3.ans; - 样例 4:见
network/network4.in与network/network4.ans。
数据范围与测试点
| 测试点 | n≤ |
特殊性质 |
|---|---|---|
| 1 | 10 | 性质 1、2、3 |
| 2~3 | 100 | 性质 1、2、3 |
| 4~5 | 1000 | 性质 1、2、3 |
| 6~8 | 1000 | 性质 1、2 |
| 9~11 | 1000 | 性质 1 |
| 12~13 | 1000 | 性质 2 |
| 14~15 | 1000 | 性质 4 |
| 16~17 | 1000 | 性质 5 |
| 18~20 | 1000 | 无特殊性质 |
- 性质 1:所有地址串都合法;
- 性质 2:任意两台同为服务机或同为客户机的计算机,其地址一定不同;
- 性质 3:任意服务机的编号都小于所有客户机;
- 性质 4:所有地址都形如
a.b.c.d:e,五段均为不超过10^9且无多余前导 0 的非负整数; - 性质 5:所有地址都形如
a.b.c.d:e,五段均为只含数字的非空字符串。
对于全部数据,1≤n≤1000。
按测试点取并集,不把重叠分数相加
勾选已掌握的路线,观察它们共同覆盖哪些测试点。这里计算的是该卷条件下的理论覆盖分,不代表程序已经通过正式评测,也不对应任何一等奖分数线。
已掌握的解法
实际提交时,须将已掌握的分支整合到同一份程序。勾选路线不会自动拼接代码。
测试点覆盖图
查看原题评分依据
逐条看懂:性质、推导与完整代码
选择一条路线,查看它为什么成立,再进入同一算法的可视化与代码追踪。
尚未输出
执行记录(最近 8 步)
用边界检查:我真的读懂了吗?
先手算,再展开解释。带入演示时会核对当前路线的适用条件。