AcWing 374. 导弹防御塔
2021-03-01 09:28
标签:str double string ring 现在 clu space 相同 ret 题目链接:AcWing 374. 导弹防御塔 ? Freda的城堡遭到 \(M\) 个入侵者的袭击!Freda控制着 \(N\) 座导弹防御塔,每座塔有足够数量的导弹,但每次只能发射一枚。在发射导弹时,导弹需要 \(T1\) 秒才能从防御塔中射出,而在发射导弹后,发射这枚导弹的防御塔需要 \(T2\) 分钟来冷却。 ? 所有导弹都有相同的匀速飞行速度 \(V\),并且会沿着距离最短的路径去打击目标。计算防御塔到目标的距离Distance时,你只需要计算水平距离,而忽略导弹飞行的高度。导弹在空中飞行的时间就是 (\(Distance/V\)) 分钟,导弹到达目标后可以立即将它击毁。 ? 现在,给出 N 座导弹防御塔的坐标,\(M\) 个入侵者的坐标,\(T1\) , \(T2\) 和 \(V\) 。因为Freda的小伙伴Rainbow就要来拜访城堡了,你需要求出至少多少分钟才能击退所有的入侵者。 \(1\leq N,M\leq 50\),坐标绝对值 \(\leq 10000\) ,\(T1,T2,V\leq 2000\) 。 ? 开始对算法不熟悉的时候很容易思路想歪。 ? 注意到数据范围很小,考虑将每一枚导弹和入侵者二分图匹配,由于答案具有单调性,且不方便直接计算,对其进行二分。 ? 为了写起来方便,我们构造 \(N*M\) 枚导弹作为右部节点,把 \(M\) 个入侵者作为左部节点,每一座导弹防御塔都可以依次发射 \(M\) 枚导弹,如果第 \(i\) 座塔的第 \(j\) 枚导弹可以在 \(mid\) 时间内到达侵略者 \(k\) ,则在节点 \(i*m+j+m\) 和节点 \(k\) 之间连无向边。 \((0\leq i ,建图后用匈牙利算法判断每个左部点是否都能找到匹配,可以则 \(r=mid\) ,否则 \(l=mid\) 。 AcWing 374. 导弹防御塔 标签:str double string ring 现在 clu space 相同 ret 原文地址:https://www.cnblogs.com/Neal-lee/p/14385974.html题面:
数据范围:
思路:
Code:
#include