1. 程式人生 > >關於NOIP2014“無線網絡發射器選址”一題的衍生題目的思考及思維方向

關於NOIP2014“無線網絡發射器選址”一題的衍生題目的思考及思維方向

大型 替換 依次 img 情況 相同 一個空格 無線網絡 示意圖

無線網絡發射器選址

題目描述

隨著智能手機的日益普及,人們對無線網的需求日益增大。某城市決定對城市內的公共場所覆蓋無線網。

假設該城市的布局為由嚴格平行的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:
1  
2  
4 4 10  
6 6 20  
 
輸出樣例#1:
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“無線網絡發射器選址”一題的衍生題目的思考及思維方向