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 5sample output1 2 3
1 3 2
1 4 4
2 5 2
3 5 5
4 5 3
3解題:二分。。。
1 #include 2 #include 3 #include 4view codeusing
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 }
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 種不同的船。每一艘船有乙個稀有值,任意兩...