1. 程式人生 > 其它 >CF918B Radio Station 題解

CF918B Radio Station 題解

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;
}