CF918B Radio Station 题解

Content

有 \(n\) 个形如 \(a_i.b_i.c_i.d_i\) 的 IP 地址。有 \(m\) 条命令,每条命令由一条字符串 \(s\) 和一个形如 \(p.q.r.s\) 的 IP 地址,你需要输出这个命令,并输出这个命令所指向的 IP 地址对应的名称。

数据范围:\(1\leqslant n,m\leqslant 1000,0\leqslant a_i,b_i,c_i,d_i,p,q,r,s\leqslant 255,1\leqslant|s|\leqslant 10\)。

Solution

这题乍一看有些高大上,但看到这个数据范围之后,我就认定了这道题目只需要 \(\mathcal{O}(nm)\) 的枚举就能够解决。具体怎么解决?很简单,输入完每一次命令,直接再在所有 \(n\) 个 IP 地址中一个一个去找,看是否有和当前命令的 IP 地址相等的,一旦碰到相等的就直接输出就好了。

Code

string name[1007];
int n, m, a[1007], b[1007], c[1007], d[1007];

int main() {
	getint(n), getint(m);
	_for(i, 1, n) {cin >> name[i]; scanf("%d.%d.%d.%d", &a[i], &b[i], &c[i], &d[i]);}
	_for(i, 1, m) {
		string tmpname; int tmpa, tmpb, tmpc, tmpd;
		cin >> tmpname;
		scanf("%d.%d.%d.%d;", &tmpa, &tmpb, &tmpc, &tmpd);
		_for(j, 1, n)
			if(tmpa == a[j] && tmpb == b[j] && tmpc == c[j] && tmpd == d[j]) {
				cout << tmpname << ' ';
				writeint(tmpa), putchar('.');
				writeint(tmpb), putchar('.');
				writeint(tmpc), putchar('.');
				writeint(tmpd), putchar(';'), putchar(' '), putchar('#');
				cout << name[j] << endl;
				break;
			}
	}
	return 0;
}
上一篇:spring boot集成spring-boot-starter-mail邮件功能


下一篇:记录黑群晖使用问题及解决方法