题目描述

随着智能手机的日益普及,人们对无线网的需求日益增大。某城市决定对城市内的公共场所覆盖无线网。

假设该城市的布局为由严格平行的 \(129\) 条东西向街道和 \(129\) 条南北向街道所形成的网格状,并且相邻的平行街道之间的距离都是恒定值$ 1$。东西向街道从北到南依次编号为 \(0,1,2...128\)和\(0,1,2…128\),南北向街道从西到东依次编号为$ 0,1,2…128$。

东西向街道和南北向街道相交形成路口,规定编号为 \(x\) 的南北向街道和编号为 \(y\) 的东西向街道形成的路口的坐标是$ (x, y)$。在某些路口存在一定数量的公共场所。

由于政府财政问题,只能安装一个大型无线网络发射器。该无线网络发射器的传播范围是一个以该点为中心,边长为 $2d $的正方形。传播范围包括正方形边界。

现在政府有关部门准备安装一个传播参数为 $d $的无线网络发射器,希望你帮助他们在城市内找出合适的路口作为安装地点,使得覆盖的公共场所最多。

输入格式

第一行包含一个整数$ d$,表示无线网络发射器的传播距离。

第二行包含一个整数 \(n\),表示有公共场所的路口数目。

接下来 n 行,每行给出三个整数$ x, y, k,\(中间用一个空格隔开,分别代表路口的坐标\) (x, y)$ 以及该路口公共场所的数量。同一坐标只会给出一次。

输出格式

输出一行,包含两个整数,用一个空格隔开,分别表示能覆盖最多公共场所的安装地点方案数,以及能覆盖的最多公共场所的数量。

输入输出样例

输入 #1 复制

1

2

4 4 10

6 6 20

输出 #1 复制

1 30

说明/提示

对于\(100%\)的数据,\(1 \leq d \leq 20, 1 \leq n \leq 20,0 \leq x \leq 128 , 0 \leq y \leq 128 , 0 < k \leq 1000000,1≤d≤20,1≤n≤20,0≤x≤128,0≤y≤128,0<k≤1000000\)

解析:

一道简单的模拟题。

因为是\(129 \times 129\)的方阵,所以我们可以枚举每一个点

然后以该点为中心开始对四周可以扫到的点累加和

我们开了两个变量来记录,

\(num\)记录最大值的个数,\(ans\)记录最大值,

有一个显然的结论就是

我们更换最大值的时候就可以把num替换为1

与此值相同或者更大的数一定会在后面。

感性理解。

#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <vector>
#include <set>
#define re register
#define Max 130
int n,ans = 0,d,g[Max][Max],num;
inline void init() {
scanf("%d%d",&d,&n);int x,y,k;
for(re int i = 1 ; i <= n ; ++ i)
scanf("%d%d%d",&x,&y,&k),g[x][y] = k;
}
void work() {
int max_place;
for(re int i = 0 ; i <= 128 ; ++ i)
for(re int j = 0 ; j <= 128 ; ++ j) {
max_place = 0;
for(re int a = -d ; a <= d ; ++ a)
for(re int b = -d ; b <= d ; ++ b)
if(a + i >= 0 && a + i <= 128 && b + j <= 128 && b + j >= 0)//判断边界情况
max_place += g[a+i][b+j];
if(max_place == ans) num++;
if(max_place > ans) ans = max_place, num = 1;
}
}
inline void print() {printf("%d %d",num,ans);}
int main() {
init();
work();
print();
return 0;
}

洛谷P2038 无线网络发射器选址的更多相关文章

  1. [NOIP2014] 提高组 洛谷P2038 无线网络发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

  2. 洛谷 P2038 无线网络发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

  3. 洛谷——P2038 无线网络发射器选址

    https://www.luogu.org/problem/show?pid=2038 题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城 ...

  4. 洛谷 P2038 无线网络发射器选址 —— 二维树状数组

    题目:https://www.luogu.org/problemnew/show/P2038 大水题暴露出我的愚蠢. 用二维树状数组,然而居然忘了它应该那样写,调了一个小时: 正方形可以超出外面,只要 ...

  5. 洛谷P2038 无线网络发射器选址 水题 枚举

    刚开始边界写错了(将128写成127). 注意n <= 20,所以可以每读入一个点就将其周边更新,这样最多也只会有 40 * 40 * 20 种位置需要被枚举. Code: #include&l ...

  6. 洛谷 P2038 无线网络发射器选址 题解

    每日一题 day9 打卡 Analysis 这道题是个模拟,两个0~128( 注意不是1~128 )的循环枚举正方形中心点,判断正方形的边界,再用循环枚举公共场所的数量就好了. 时间复杂度 < ...

  7. P2038 无线网络发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

  8. NOIP2014 无线网络发射器选址

    1.无线网络发射器选址 (wireless.cpp/c/pas) [问题描述] 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平 ...

  9. NOIP2014_day2:无线网络发射器选址

    #include<stdio.h>//NOIP2014 day2 :无线网络发射器选址 ,max=; ][]; void wifi(int a,int b,int c) { int i,j ...

随机推荐

  1. GitLab CI/CD的官译【原】

    CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...

  2. Python面向对象封装案例

    01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 ...

  3. English--动词语态

    English|动词语态 动词的语态在理解长难句中很重要.了解被动语态与主动语态,掌握语态的变化方式. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力求不含任何的自我 ...

  4. Texture(ASDK)、ComponentKit、LayoutKit、YogaKit

    YogaKit 最轻量,改动量最小,目的最纯粹,同时也最类似于使用 frame ,需要自己造一波在 UITableView 中使用的轮子(各类 frame 结果缓存方案).同类的备选方案是 FlexB ...

  5. python的new与init

    基于文章:Why is init() always called after new()? 特别说明: 这篇文章的灵感来源于stackoverflow的一个提问,准确说,我只是做了些知识梳理的工作,对 ...

  6. 美团点评CAT监控平台研究

    1. 美团点评CAT监控平台研究 1.1. 前言 此文根据我对官方文档阅读并记录整理所得,中间可能会穿插一些自己的思考和遇坑 1.2. 简介 CAT 是基于 Java 开发的实时应用监控平台,为美团点 ...

  7. 编写可维护的JavaScript-随笔(一)

    一.基本的格式化 1. 缩进层级 a)      制表符缩进 i.          好处:制表符和缩进层级是一对一的关系是符合逻辑的,文本编辑器可以配置制表符的展示长度,可以随意调节 ii.     ...

  8. Vue – 基础学习(1):对生命周期和钩子函的理解

    一.简介 先贴一下官网对生命周期/钩子函数的说明(先贴为敬):所有的生命周期钩子自动绑定 this 上下文到实例中,因此你可以访问数据,对属性和方法进行运算.这意味着你不能使用箭头函数来定义一个生命周 ...

  9. MES实施可能会遇到的问题,这里都帮你解决

    MES系统选型关键技术的发展已日趋成熟,开发MES系统技术并不是问题,困难的是如何确定系统的功能.规格,如何成功地使用MES系统,以充分发挥其作用,下面给大家分析这两大块内容. 实施MES系统选型的困 ...

  10. springboot 集成百度的唯一ID生成器

    UidGenerator是百度开源的Java语言实现,基于Snowflake算法的唯一ID生成器.而且,它非常适合虚拟环境,比如:Docker.另外,它通过消费未来时间克服了雪花算法的并发限制.Uid ...