hiho38 二分 二分答案

2021-06-29 11:32:07 字數 1715 閱讀 1914

在上一回和上上回里我們知道nettle在玩《艦これ》,nettle在整理好艦隊之後終於準備出海撈船和敵軍交戰了。

在這個遊戲裡面,海域是n個戰略點(編號1..n)組成,如下圖所示

其中紅色的點表示有敵人駐紮,貓頭像的的點表示該地圖敵軍主力艦隊(boss)的駐紮點,虛線表示各個戰略點之間的航線(無向邊)。

在遊戲中要從乙個戰略點到相鄰戰略點需要滿足一定的條件,即需要艦隊的索敵值大於等於這兩點之間航線的索敵值需求。

由於提高索敵值需要將攻擊機、轟炸機換成偵察機,艦隊索敵值越高,也就意味著艦隊的戰力越低。

另外在每乙個戰略點會發生一次戰鬥,需要消耗1/k的燃料和子彈。必須在燃料和子彈未用完的情況下進入boss點才能與boss進行戰鬥,所以艦隊最多只能走過k條航路。

現在nettle想要以最高的戰力來進攻boss點,所以他希望能夠找出一條從起始點(編號為1的點)到boss點的航路,使得艦隊需要達到的索敵值最低,並且有剩餘的燃料和子彈。

特別說明:兩個戰略點之間可能不止一條航線,兩個相鄰戰略點之間可能不止一條航線。保證至少存在一條路徑能在燃料子彈用完前到達boss點。第1行:4個整數n,m,k,t。n表示戰略點數量,m表示航線數量,k表示最多能經過的航路,t表示boss點編號, 1≤n,k≤10,000,n≤m≤100,000

第2..m+1行:3個整數u,v,w,表示戰略點u,v之間存在航路,w表示該航路需求的索敵值,1≤w≤1,000,000。

第1行:乙個整數,表示艦隊需要的最小索敵值。

5 6 2 5

1 2 3

1 3 2

1 4 4

2 5 2

3 5 5

4 5 3 3

#1. 首先,理解題意。 

本題題意:給出一張帶有邊權值的無向圖,返回從起點(編號為1)到終點(編號t,輸入給出)中經過的所有的路徑中最長路段的最小值。

好像有點繞,舉樣例的例子說明,首先作圖如下:

1號節點是起點,5號是終點,從1到5有三條通路:1->2->5; 1->3->5; 1->4->5; 對應路徑中最長的路段長度分別是:3;5;4;因此在中最小值3是正確值。

#2. 尋找合適的方法。

空間複雜度。

n的最大值10,000,如果用鄰接矩陣直接存,肯定要爆掉! 計算如下:

4bit(1個int占用4bit記憶體)*10000*10000/(1024*1024) > 381mb > 256mb
而且m最大值100,000,也就意味著這是一幅稀疏圖,顯然要用鄰接表結構存圖。

時間複雜度。

好吧,其實我是不太會分析的。。。留空先。

但是呢,暴力搜尋,即使加了基本的剪枝還是會tle的。

演算法設計。

本題還有乙個特點,就是最後的答案肯定 小於 輸入給出的所有邊權值的最大值。that is to say,答案其實就在輸入的邊權值中。這樣一類題目的常用方法往往是最大值(答案上限)和最小值(答案下限)中二分。

結合來看,在二分答案後,檢查能不能在圖中找到這樣的一條路徑,其中路段最大值小於或等於這個「答案」。

bfs和轉化為最短路都是可以做的。 前者很簡單,後者需要轉化下邊權值。

恩,就是這樣!

hiho week 38 P1 二分 二分答案

time limit 10000ms case time limit 1000ms memory limit 256mb 描述 在上一回和上上回里我們知道nettle在玩 艦 nettle在整理好艦隊之後終於準備出海撈船和敵軍交戰了。在這個遊戲裡面,海域是n個戰略點 編號1.n 組成,如下圖所示 其...

hiho 1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...

二分查詢與二分答案

主要用於在乙個單調的函式中查詢某值 連續函式的情況 若當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y 則 l mid,否則 r mid 直至 r l eps 當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y...