关于NOIP2014“无线网络发射器选址”一题的衍生题目的思考及思维方向
无线网络发射器选址
题目描述
随着智能手机的日益普及,人们对无线网的需求日益增大。某城市决定对城市内的公共场所覆盖无线网。
假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻的平行街道之间的距离都是恒定值 1 。东西向街道从北到南依次编号为0,1,2…128 , 南北向街道从西到东依次编号为0,1,2…128 。
东西向街道和南北向街道相交形成路口,规定编号为x 的南北向街道和编号为y 的东西向街道形成的路口的坐标是(x , y )。 在 某 些 路口存在一定数量的公共场所 。
由于政府财政问题,只能安装一个大型无线网络发射器。该无线网络发射器的传播范围
一个以该点为中心,边长为2*d 的正方形。传播范围包括正方形边界。
例如下图是一个d = 1 的无线网络发射器的覆盖范围示意图。
现在政府有关部门准备安装一个传播参数为d 的无线网络发射器,希望你帮助他们在城市内找出合适的安装地点,使得覆盖的公共场所最多。
输入输出格式
输入格式:
输入文件名为wireless.in。
第一行包含一个整数d ,表示无线网络发射器的传播距离。
第二行包含一个整数n ,表示有公共场所的路口数目。
接下来n 行,每行给出三个整数x , y , k , 中间用一个空格隔开,分别代表路口的坐标( x , y )
以及该路口公共场所的数量。同一坐标只会给出一次。
输出格式:
输出文件名为wireless.out 。
输出一行,包含两个整数,用一个空格隔开,分别表示能覆盖最多公共场所的安装地点 方案数,以及能覆盖的最多公共场所的数量。
输入输出样例
1
2
4 4 10
6 6 20
1 30
说明
对于100%的数据,1≤d≤20,1≤n≤20, 0≤x≤128,0≤y≤128,0<k≤1,000,000。
分析
原题目
根据这道题的数据范围看,这毫无疑问是一道水题。即使纯暴力枚举各个点周围的公共场合数,保留最大值,也能在限定时间内得出答案。
发散衍生
这道题之所以难度极低是因为其数据范围决定了其对于暴力算法良好的适性,但是当数据范围大幅度上涨,以至于连原题目规定死了的街道数目,以及wifi信号发射点的数量也增加时,就远不止这么简单。我们在此提出一种思想方法解决类似的问题,由于本篇根本目的在与提供对于许多情况适用的思路而非原题题解,因此不提供代码。
理论思路
思路一:等效思维
我们不妨考虑将统计每个点有效范围内的公共场所数量等效替换为对于每个公共场所,给以其为中心,与wifi信号范围相同大小的范围内的所有点的权值+1,然后找出权值最大(根据题目意思可调整为第n大)的点。这样相比于原暴力统计,就节省了不少无效计算,也使数据更好处理,方便了进一步的优化操作。权值+1的操作在读入数据时就可以顺便完成。
思路二:搜索范围的减小
减小搜索范围,首要的是探讨在一定范围内的搜索是否有意义,这种探讨有时容易,有时显得隐晦。幸而在本题中这种探讨的结果显而易见。在思路一的基础上很容易得出结论:只有以各个公共场所为中心,与wifi信号范围相同大小的范围内的点的权值有统计的意义。由此,搜索范围瞬间缩小到可以接受的范围,也就可以应付各个数据范围的大幅增长了。
总结
萌新第一次写文,说了这一些,一方面方便自己复习,另一方面也抛砖引玉,希望各位dalao赏识,跟我多多做一些这方面的讨论。那么,到此结束。
关于NOIP2014“无线网络发射器选址”一题的衍生题目的思考及思维方向的更多相关文章
- NOIP2014 无线网络发射器选址
1.无线网络发射器选址 (wireless.cpp/c/pas) [问题描述] 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平 ...
- NOIP2014无线网络发射器选址改编1
问题描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状,并且相邻的平 ...
- noip2014无线网络发射器选址
题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的 129 条东西向街道和 129 条南北向街道所形成的网格状,并且 ...
- luogu2038 [NOIp2014]无线网络发射器选址 (前缀和)
貌似不用做前缀和也能过? #include<bits/stdc++.h> #define pa pair<int,int> #define CLR(a,x) memset(a, ...
- 洛谷P2038 无线网络发射器选址 水题 枚举
刚开始边界写错了(将128写成127). 注意n <= 20,所以可以每读入一个点就将其周边更新,这样最多也只会有 40 * 40 * 20 种位置需要被枚举. Code: #include&l ...
- [NOIP2014] 提高组 洛谷P2038 无线网络发射器选址
题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...
- NOIP2014_day2:无线网络发射器选址
#include<stdio.h>//NOIP2014 day2 :无线网络发射器选址 ,max=; ][]; void wifi(int a,int b,int c) { int i,j ...
- Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1
3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大. ...
- luogu2038[NOIP2014 T4]无线网络发射器选址
题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...
随机推荐
- 201521123076《Java程序设计》第1周学习总结
一. 本章学习总结 1.了解了JDK,JVM,JRE的相关内容 JVM(Java Virtual Machine): Java虚拟机,*.java原始码,经过编译程序翻译为.class位码.JVM正是 ...
- 201521123032 《Java程序设计》第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- 记一次Linux下给硬盘分区格式化操作
今天找到一张旧TF卡,2G的,正好拿来练习下建立分区 插上orangepi后,fdisk -l看看,可以看到多了一个新的存储设备 /dev/mmcblk1 用fdisk打开它: fdisk /dev/ ...
- ASP.NET Core 运行原理剖析
1. ASP.NET Core 运行原理剖析 1.1. 概述 1.2. 文件配置 1.2.1. Starup文件配置 Configure ConfigureServices 1.2.2. appset ...
- mongodb 常用的命令
mongodb 常用的命令 对数据库的操作,以及登录 1 进入数据库 use admin 2 增加或修改密码 db.addUser('wsc', '123') 3查看用户列表 db.system.us ...
- Opengl4.5 中文手册—E
索引 A B C D E F G H I J K L M N O P Q ...
- getField()和select()方法的区别
在ThinkPHP中,查询数据库是必不可少的操作. 那么,getField()方法和select()方法都是查询的方法,到底有什么不同呢? 案例来说明: A.select()方法 例子1 $acces ...
- VC++:创建,调用Win32动态链接库
VC++:创建,调用Win32动态链接库 概述 DLL(Dynamic Linkable Library)动态链接库,Dll可以看作一种仓库,仓库中包含了可以直接使用的变量,函数或类.仓库的发展史经历 ...
- 针对Openlayer3官网例子的简介
网址:http://openlayers.org/en/latest/examples/ 如果大家想了解ol3能做什么,或者说已提供的API有什么,又闲一个个翻例子跟API累的话,就看看这个吧. 1. ...
- 【运维】CPU负载
最近对我的本本(4核8线程)用top命令看系统状况出现了CPU利用率超过200%的情况,非常诧异,查了下相关资料,把这个问题弄清楚了.首先来分析下CPU Load load average: 0.09 ...