1 条题解

  • 3
    @ 2022-12-10 15:51:51

    本题思路:逆向思维,与扫雷那道题类似,用一个二维数组(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

[普及][NOIP2014 提高组]无线网络发射器选址

信息

ID
1452
时间
1000ms
内存
128MiB
难度
4
标签
递交数
94
已通过
42
上传者