freda控制著n座可以發射飛彈的防禦塔。每座塔都有足夠數量的飛彈,但是每座塔每次只能發射一枚。在發射飛彈時,飛彈需要t1秒才能從防禦塔中射出,而在發射飛彈後,發射這枚飛彈的防禦塔需要t2分鐘來冷卻。
所有飛彈都有相同的勻速飛行速度v,並且會沿著距離最短的路徑去打擊目標。計算防禦塔到目標的距離distance時,你只需要計算水平距離,而忽略飛彈飛行的高度。飛彈在空中飛行的時間就是 (distance/v) 分鐘,飛彈到達目標後可以立即將它擊毀。
現在,給出n座飛彈防禦塔的座標,m個入侵者的座標,t1、t2和v,你需要求出至少要多少分鐘才能擊退所有的入侵者。
第一行五個正整數n,m,t1,t2,v。
接下來m行每行兩個整數,代表入侵者的座標。
接下來n行每行兩個整數,代表防禦塔的座標。
輸出乙個實數,表示最少需要多少分鐘才能擊中所有的入侵者,四捨五入保留六位小數。
3 3 30 20 1
0 0
0 50
50 0
50 50
0 1000
1000 0
91.500000
【資料規模】
對於40%的資料,n,m<=20.
對於100%的資料, 1≤n≤50, 1≤m≤50,座標絕對值不超過10000,
t1,t2,v不超過2000.
#include
#include
#include
#include
#include
#include
#include
#define inf ~0u>>2
#define maxn 5500
using
namespace
std;
int n,m,head[maxn],d[maxn],q[maxn],tot;
double dis[55][55];
struct node_enemy
m[55];
struct node_tower
n[55];
double t1,t2,v;
inline
double calc(node_enemy a,node_tower b)
struct node_edge
edge[500000];
inline
void addedge(int u,int v,int w)
inline
void add(int u,int v,double w)
inline
double predeal()
return t;
}inline
bool bfs()}}
if(d[5000]>0)return
1; else
return0;}
inline
int dfs(int x,int low)
}return0;}
inline
int dinic()
return ff;
}inline
bool check(double lim)
}for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
add(0,(i-1)*m+j,1);
for (int i=1;i<=m;i++)
add(3000+i,5000,1);
int tmp=dinic();
return tmp==m;
}int main()
printf("%lf\n",l);
return
0;}
飛彈防禦塔
freda的城堡遭受了 m 個入侵者的攻擊!freda控制著 n 座飛彈防禦塔,每座塔都有足夠數量的飛彈,但是每次只能發射一枚。在發射飛彈時,飛彈需要 t1 秒才能從防禦塔中射出,而在發射飛彈後,發射這枚飛彈的防禦塔需要 t2 分鐘來冷卻。所有飛彈都有相同的勻速飛行速度 v,並且會沿著距離最短的路徑...
網路流 飛彈防禦塔
freda的城堡 freda,城堡外發現了一些入侵者!喵 剛剛 完了城堡建設的方案數,我要歇一會兒嘛lala 可是入侵者已經接近城堡了呀!別擔心,rainbow,你看呢,這是我剛設計的飛彈防禦系統的說 喂 別賣萌啊 freda控制著n座可以發射飛彈的防禦塔。每座塔都有足夠數量的飛彈,但是每座塔每次只...
Codevs2490 飛彈防禦塔
時間限制 1 s 空間限制 64000 kb 題目等級 大師 master freda的城堡 freda,城堡外發現了一些入侵者!喵.剛剛 完了城堡建設的方案數,我要歇一會兒嘛lala 可是入侵者已經接近城堡了呀!別擔心,rainbow,你看呢,這是我剛設計的飛彈防禦系統的說 喂.別賣萌啊 fred...