1 条题解
-
3
本题思路:逆向思维,与扫雷那道题类似,用一个二维数组(m)存储在每一个路口建设发射器能覆盖的公共场所,输入每个路口时,将周围以d为半径的矩形加上此路口公共场所数,最后求出最大值与数量
#include <bits/stdc++.h> using namespace std; int d , n , x , y , k , maxx , sum , m[130][130]; int main() { cin >> d; cin >> n; for (int i = 1 ; i <= n ; i++) { cin >> x >> y >> k; //将周围以d为半径的矩形加上此路口公共场所数 for (int tx = x - d ; tx <= x + d ; tx++) { for (int ty = y - d ; ty <= y + d ; ty++) { if (tx < 0 || tx > 128 || ty < 0 || ty > 128) continue; m[tx][ty] += k; } } } //求最大值 for (int i = 0 ; i <= 128 ; i++) { for (int j = 0 ; j <= 128 ; j++) { maxx = max(maxx , m[i][j]); } } //求最大值数量 for (int i = 0 ; i <= 128 ; i++) { for (int j = 0 ; j <= 128 ; j++) { if (m[i][j] == maxx) sum++; } } cout << sum << " " << maxx; return 0; }
- 1
信息
- ID
- 1452
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 94
- 已通过
- 42
- 上传者