P7911 [CSP-J 2021] 网络连接 题解 简单模拟
题目链接:https://www.luogu.com.cn/problem/P7911
模拟。
示例程序:
#include <bits/stdc++.h>
using namespace std;
// ip地址-Sever编号
map<string, int> mp;
int n;
bool check(string s) {
int a = -1, b = -1, c = -1, d = -1, e = -1;
int cnt = 1; // 正在解析第几个数字
for (auto x : s) {
if (x == '.') {
cnt++;
if (cnt > 4)
return false;
}
else if (x == ':') {
cnt++;
if (cnt != 5)
return false;
}
else if (x >= '0' && x <= '9') {
if (cnt == 1) { // a
if (a == -1) a = x - '0';
else if (a == 0) return false;
else a = a * 10 + x - '0';
if (a > 255) return false;
}
else if (cnt == 2) { // b
if (b == -1) b = x - '0';
else if (b == 0) return false;
else b = b * 10 + x - '0';
if (b > 255) return false;
}
else if (cnt == 3) { // c
if (c == -1) c = x - '0';
else if (c == 0) return false;
else c = c * 10 + x - '0';
if (c > 255) return false;
}
else if (cnt == 4) { // d
if (d == -1) d = x - '0';
else if (d == 0) return false;
else d = d * 10 + x - '0';
if (d > 255) return false;
}
else if (cnt == 5) { // e
if (e == -1) e = x - '0';
else if (e == 0) return false;
else e = e * 10 + x - '0';
if (e > 65535) return false;
}
else
return false;
}
else return false;
}
return cnt == 5 && a!=-1 && b!=-1 && c!=-1 && d!=-1 && e!=-1;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
string a, b;
cin >> a >> b;
if (!check(b)) {
cout << "ERR\n";
continue;
}
if (a == "Server") {
if (mp[b]) {
cout << "FAIL\n";
}
else {
cout << "OK\n";
mp[b] = i;
}
}
else { // a == "Client"
if (mp[b]) {
cout << mp[b] << "\n";
}
else {
cout << "FAIL\n";
}
}
}
return 0;
}
浙公网安备 33010602011771号