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...