每日一題之 hiho 1139 二分答案

2021-08-20 17:50:35 字數 1496 閱讀 2661

描述

在上一回和上上回里我們知道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思路:

就二分mid 看能否滿足條件。複習一下vector模擬鄰接表與bfs遍歷。

#include 

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1e5+5;

struct edge

;vector

edge[maxn];

int vis[maxn];

int n,m,k,t;

bool judge(int x)}}

return

false;

}int search(int low, int high)

return low;

}int main()

int res = search(1,1e9);

cout

<< res

0;}

hiho 1139 二分 bfs搜尋

題目 實現 include include include include include include include include include include include includeusing namespace std struct edge 邊的個數,開始的時候陣列開的長度為...

每日一題之 hiho1744 hohahola

描述 有一種叫作hohahola的飲料,售價是x元一瓶。小hi非常喜歡這種飲料,但是他現在身無分文。不過小hi有n張優惠券,買hohahola時每瓶最多使用一張優惠券,可以使該瓶 減少y元。y x 同時優惠券可以 小hi每 一張優惠券可以獲得z元。請你幫小hi計算通過 若干優惠券,他最多可以買多少瓶...

每日一題之 hiho1304 24點

週末,小hi和小ho都在家待著。在收拾完房間時,小ho偶然發現了一副撲克,於是兩人考慮用這副撲克來打發時間。小ho 玩點什麼好呢?小hi 兩個人啊,不如來玩24點怎麼樣,不靠運氣就靠實力的遊戲。小ho 好啊,好啊。經過若干局遊戲之後 小ho 小hi,你說如果要寫個程式來玩24點會不會很複雜啊?小hi...