hiho week 38 P1 二分 二分答案

2022-03-05 19:16:30 字數 1841 閱讀 2897

time limit:10000ms

case time limit:1000ms

memory limit:256mb

描述

在上一回和上上回里我們知道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行:乙個整數,表示艦隊需要的最小索敵值。

sample input

5 6 2 5

1 2 3

1 3 2

1 4 4

2 5 2

3 5 5

4 5 3

sample output

3

解題:二分。。。

1 #include 2 #include 3 #include 4

using

namespace

std;

5const

int maxn = 20010;6

struct

arc13 }e[maxn*50

];14

inthead[maxn],d[maxn],tot,n,m,k,t;

15void add(int u,int v,int

cost)

21 queueq;

22bool bfs(int

value)35}

36}37if(d[t] == -1 || d[t] > k) return

false;38

return

true;39

}40intmain()

48int low = 1,high = 1000000,ans = 0;49

while(low <=high)

54 printf("

%d\n

",ans);55}

56return0;

57 }

view code

hiho38 二分 二分答案

在上一回和上上回里我們知道nettle在玩 艦 nettle在整理好艦隊之後終於準備出海撈船和敵軍交戰了。在這個遊戲裡面,海域是n個戰略點 編號1.n 組成,如下圖所示 其中紅色的點表示有敵人駐紮,貓頭像的的點表示該地圖敵軍主力艦隊 boss 的駐紮點,虛線表示各個戰略點之間的航線 無向邊 在遊戲中...

題目1 二分 二分查詢

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

題目1 二分 二分查詢

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