算法
(暴力枚举)
遍历每个点,从该点进行放发射器的情况继续进行遍历,得出该点放发射器时可覆盖的公共场所的数量。
内外两重嵌套,暴力模拟即可通过。
C++ 代码
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using std::cin;
using std::cout;
using std::vector;
inline void chmax(int &x, int y) { if (x < y) x = y; }
int main() {
int d, n;
cin >> d >> n;
vector a(170, vector<int>(170));
rep(i, n) {
int x, y;
cin >> x >> y;
cin >> a[x+20][y+20]; // 偏移 20 是为了覆盖所有的点
}
int sum = 0, mx = 0;
for (int i = 20; i <= 148; ++i) {
for (int j = 20; j <= 148; ++j) {
int cnt = 0;
for (int ni = i-d; ni <= i+d; ++ni) {
for (int nj = j-d; nj <= j+d; ++nj) {
cnt += a[ni][nj];
}
}
if (mx == cnt) ++sum;
else if (mx < cnt) sum = 1;
chmax(mx, cnt);
}
}
cout << sum << " " << mx << '\n';
return 0;
}