網路流 飛彈防禦塔

2021-08-21 14:57:13 字數 1824 閱讀 2104

freda的城堡——

「freda,城堡外發現了一些入侵者!」

「喵…剛剛**完了城堡建設的方案數,我要歇一會兒嘛lala~」

「可是入侵者已經接近城堡了呀!」

「別擔心,rainbow,你看呢,這是我剛設計的飛彈防禦系統的說~」

「喂…別賣萌啊……」

freda控制著n座可以發射飛彈的防禦塔。每座塔都有足夠數量的飛彈,但是每座塔每次只能發射一枚。在發射飛彈時,飛彈需要t1秒才能從防禦塔中射出,而在發射飛彈後,發射這枚飛彈的防禦塔需要t2分鐘來冷卻。

所有飛彈都有相同的勻速飛行速度v,並且會沿著距離最短的路徑去打擊目標。計算防禦塔到目標的距離distance時,你只需要計算水平距離,而忽略飛彈飛行的高度。飛彈在空中飛行的時間就是 (distance/v) 分鐘,飛彈到達目標後可以立即將它擊毀。

現在,給出n座飛彈防禦塔的座標,m個入侵者的座標,t1、t2和v,你需要求出至少要多少分鐘才能擊退所有的入侵者。

input

第一行五個正整數n,m,t1,t2,v。

接下來m行每行兩個整數,代表入侵者的座標。

接下來n行每行兩個整數,代表防禦塔的座標。

output

輸出乙個實數,表示最少需要多少分鐘才能擊中所有的入侵者,四捨五入保留六位小數。

sample input

3 3 30 20 1

0 0

0 50

50 0

50 50

0 1000

1000 0

sample output

91.500000

data constraint

對於40%的資料,n,m<=20.

對於100%的資料, 1≤n≤50, 1≤m≤50,座標絕對值不超過10000,t1,t2,v不超過2000.

顯然的二分圖,求最值最逆,我們選用二分(只能用好嗎)

我們把乙個炮塔拆成多個點,每個點連在二分範圍內允許攻擊到的敵軍即可

跑最大流吧,我還是喜歡網路流來做啊

#include 

#include

#include

#include

#include

#define rep(i,a,b) for (i=a;i<=b;i++)

const

double eps=1e-9;

const

int inf=2147483647;

using

namespace

std;

struct edgeg[500011];

intlist[5011],d[5011],cur[5011];

int cnt;

int s,t;

int n,m;

double t1,t2,v;

inline

double get_dis(int x1,int y1,int x2,int y2)

inline

void add(int u,int v,int w)

bool bfs()

i=g[i].nx;}}

return0;}

int mxf(int x,int minf)

return fout;

}bool dinic()

return ans==m;

}int main()

rep(i,1,m) add(n*m+i,t,1);

if (dinic()) r=mid; else l=mid;

}printf("%.6lf",l);

}

飛彈防禦塔

freda的城堡遭受了 m 個入侵者的攻擊!freda控制著 n 座飛彈防禦塔,每座塔都有足夠數量的飛彈,但是每次只能發射一枚。在發射飛彈時,飛彈需要 t1 秒才能從防禦塔中射出,而在發射飛彈後,發射這枚飛彈的防禦塔需要 t2 分鐘來冷卻。所有飛彈都有相同的勻速飛行速度 v,並且會沿著距離最短的路徑...

飛彈防禦塔(missble)題解

freda控制著n座可以發射飛彈的防禦塔。每座塔都有足夠數量的飛彈,但是每座塔每次只能發射一枚。在發射飛彈時,飛彈需要t1秒才能從防禦塔中射出,而在發射飛彈後,發射這枚飛彈的防禦塔需要t2分鐘來冷卻。所有飛彈都有相同的勻速飛行速度v,並且會沿著距離最短的路徑去打擊目標。計算防禦塔到目標的距離dist...

Codevs2490 飛彈防禦塔

時間限制 1 s 空間限制 64000 kb 題目等級 大師 master freda的城堡 freda,城堡外發現了一些入侵者!喵.剛剛 完了城堡建設的方案數,我要歇一會兒嘛lala 可是入侵者已經接近城堡了呀!別擔心,rainbow,你看呢,這是我剛設計的飛彈防禦系統的說 喂.別賣萌啊 fred...