51Nod 1314 定位系统
一個(gè)國(guó)家有N個(gè)城市(標(biāo)號(hào)為0~N-1),這N個(gè)城市恰好由N-1條道路連接在一起(即N個(gè)城市正好構(gòu)成一個(gè)樹狀結(jié)構(gòu))。這個(gè)國(guó)家的所有道路的長(zhǎng)度都是1個(gè)長(zhǎng)度單位。定義:兩個(gè)城市間的距離是兩個(gè)城市間的最短路的長(zhǎng)度。
現(xiàn)在這個(gè)國(guó)家想建立一套定位系統(tǒng),讓國(guó)家的公民能通過這套系統(tǒng)定位自己所在的城市。該系統(tǒng)由K個(gè)有編號(hào)的信號(hào)站構(gòu)成,不妨將它們標(biāo)號(hào)為0,1,2,3,...,K-1。每個(gè)信號(hào)站會(huì)放在一個(gè)城市中,每個(gè)城市最多安放一個(gè)信號(hào)站,每個(gè)信號(hào)站將不停的向外界發(fā)送信。(值得注意的是,信號(hào)站i不一定要安放在城市i中,例如:信號(hào)站2可以放在城市3中,也可以放城市4中)對(duì)于一個(gè)公民來說,如果他在城市X,那么他打開手機(jī)定位時(shí),手機(jī)將收集K個(gè)信號(hào)站的信號(hào),并根據(jù)這些信息生成一個(gè)K個(gè)元素的數(shù)組Dis[],其中Dis[i]記錄著信號(hào)站i所在的城市與手機(jī)用戶所在的城市(這里即為城市X)的距離。手機(jī)中的定位軟件將根據(jù)該Dis[]數(shù)組來判斷用戶所在的城市編號(hào)。
由于信號(hào)站成本太高,該國(guó)家想盡可能少的購(gòu)買信號(hào)站,那么問題來了,該國(guó)家最少需要安裝多少個(gè)信號(hào)站才能唯一定位每一個(gè)城市?
友情提示:每個(gè)城市能被唯一定位的充要條件是,在每一個(gè)城市手機(jī)能接收到的數(shù)組Dis[]是互不相同的。
例如:這個(gè)國(guó)家有三個(gè)城市0,1,2,且鏈接關(guān)系為 0 -- 1 -- 2 (即0、1間有邊,1、2間有邊)。那么只需要一個(gè)基站就可以了。但是該基站需要放在城市0或城市2。如果放在城市0,那么:
在城市0:Dis = {0};
在城市1:Dis = {1};
在城市2:Dis = {2};
顯然是可區(qū)分的。同理放在城市2中。
但是如果放在城市1中,三個(gè)城市的手機(jī)用戶會(huì)得到如下數(shù)據(jù):
在城市0:Dis = {1};
在城市1:Dis = {0};
在城市2:Dis = {1};
顯然,城市0和城市2所獲得的Dis[]數(shù)據(jù)相同,軟件顯然無(wú)法區(qū)分Dis={1}時(shí),用戶是在城市0呢?還是在城市2?所以該安放方法不是最佳的。
解題報(bào)告:
用時(shí):2h,4WA
這題比較簡(jiǎn)單,首先要明白葉子節(jié)點(diǎn)必須選,因?yàn)橐粚?duì)葉子節(jié)點(diǎn),除非在兩者之間建立基站,其他不管在它們的爸爸媽媽爺爺奶奶處建立都沒有辦法區(qū)分他們兩個(gè),所以只有二選一,但是還有一個(gè)決策,記一個(gè)點(diǎn)的葉子節(jié)點(diǎn)數(shù)為\(cnt\),那么如果這個(gè)點(diǎn)沒有父節(jié)點(diǎn),顯然只需要建立\(cnt-1\)個(gè)即可,那么如果有父親節(jié)點(diǎn),這個(gè)被獨(dú)立出來的葉子節(jié)點(diǎn)和他的父節(jié)點(diǎn)就無(wú)法區(qū)分,所以還需要決策,所以我們?cè)倜杜e一個(gè)根節(jié)點(diǎn),并且強(qiáng)制根節(jié)點(diǎn)要選,那么剩余的這顆子樹就可和其區(qū)分開了,所以我們只需要保證每一個(gè)節(jié)點(diǎn)的子樹中,只有一個(gè)子樹沒有選即可,代碼簡(jiǎn)短
轉(zhuǎn)載于:https://www.cnblogs.com/Yuzao/p/7598375.html
總結(jié)
以上是生活随笔為你收集整理的51Nod 1314 定位系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP:验证邮箱合法性
- 下一篇: windows server 2016