L3-009 长城 (30分):几何数学
正如我們所知,中國古代長城的建造是為了抵御外敵入侵。在長城上,建造了許多烽火臺。每個烽火臺都監視著一個特定的地區范圍。一旦某個地區有外敵入侵,值守在對應烽火臺上的士兵就會將敵情通報給周圍的烽火臺,并迅速接力地傳遞到總部。
現在如圖1所示,若水平為南北方向、垂直為海拔高度方向,假設長城就是依次相聯的一系列線段,而且在此范圍內的任一垂直線與這些線段有且僅有唯一的交點。
圖 1
進一步地,假設烽火臺只能建造在線段的端點處。我們認為烽火臺本身是沒有高度的,每個烽火臺只負責向北方(圖1中向左)瞭望,而且一旦有外敵入侵,只要敵人與烽火臺之間未被山體遮擋,哨兵就會立即察覺。當然,按照這一軍規,對于南側的敵情各烽火臺并不負責任。一旦哨兵發現敵情,他就會立即以狼煙或烽火的形式,向其南方的烽火臺傳遞警報,直到位于最南側的總部。
以圖2中的長城為例,負責守衛的四個烽火臺用藍白圓點示意,最南側的總部用紅色圓點示意。如果紅色星形標示的地方出現敵情,將被哨兵們發現并沿紅色折線將警報傳遞到總部。當然,就這個例子而言只需兩個烽火臺的協作,但其他位置的敵情可能需要更多。
然而反過來,即便這里的4個烽火臺全部參與,依然有不能覆蓋的(黃色)區域。
圖 2
另外,為避免歧義,我們在這里約定,與某個烽火臺的視線剛好相切的區域都認為可以被該烽火臺所監視。以圖3中的長城為例,若A、B、C、D點均共線,且在D點設置一處烽火臺,則A、B、C以及線段BC上的任何一點都在該烽火臺的監視范圍之內。
圖 3
好了,倘若你是秦始皇的太尉,為不致出現更多孟姜女式的悲劇,如何在保證長城安全的前提下,使消耗的民力(建造的烽火臺)最少呢?
輸入格式:
輸入在第一行給出一個正整數N(3 ≤ N ≤10
?5
?? ),即刻畫長城邊緣的折線頂點(含起點和終點)數。隨后N行,每行給出一個頂點的x和y坐標,其間以空格分隔。注意頂點從南到北依次給出,第一個頂點為總部所在位置。坐標為區間[?10
?9
?? ,10
?9
?? )內的整數,且沒有重合點。
輸出格式:
在一行中輸出所需建造烽火臺(不含總部)的最少數目。
輸入樣例:
10
67 32
48 -49
32 53
22 -44
19 22
11 40
10 -65
-1 -23
-3 31
-7 59
輸出樣例:
2
總結
以上是生活随笔為你收集整理的L3-009 长城 (30分):几何数学的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java--继承--上转型--接口的实践
- 下一篇: 鲜枣课堂文章目录(重新梳理版)