HLG 1481 Attack of the Giant n-pus【二分+二分图完全匹配】
题意: 有 p 个水手和一个章鱼,章鱼有 n 个脚,知道了所有单位的坐标,和船长以及船员的速度,船长想去攻击章鱼的头部,但是只有在章鱼所有的脚都被水手控制的情况下才会开始朝章鱼头部进攻,问如何分配水手控制的触须,才能在最短时间内是船长攻击到其头部。
分析: 二分枚举船员移动的时间ti, 如果水手与某个触须接触所要的时间小于 ti,就在该水手与该触须之间连一条边,找出满足水手与触须最大匹配等于 n 的最小时间,最后加上船长移动到章鱼头部需要的时间即为答案。
#include<cstring> #include<cstdio> #include<cmath> #define clr(x)memset(x,0,sizeof(x)) int link[102]; bool v[102]; struct p {int to,next; }e[10002]; struct node {double x,y;double v; }te[102],pr[102],ca,he; int tot; int head[102]; void add(int s,int u) {e[tot].to=u;e[tot].next=head[s];head[s]=tot++; } int find(int x) {int i,k;for(i=head[x];i;i=e[i].next){k=e[i].to;if(!v[k]){v[k]=true;if(link[k]==0||find(link[k])){link[k]=x;return 1;}}}return 0; } int n,p; double g[102][102]; bool ok(double ti) {int i,j;tot=1;clr(head);clr(link);for(i=1;i<=p;i++)for(j=1;j<=n;j++)if(g[i][j]<ti)add(i,j);int s=0;for(i=1;i<=p;i++){clr(v);if(find(i))s++;}if(s==n)return true;return false; } double res; double dis(node a,node b) {return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } int main() {int t,i,j;double low,high,mid;scanf("%d",&t);while(t--){scanf("%d%d",&n,&p);scanf("%lf%lf%lf",&ca.x,&ca.y,&ca.v);for(i=1;i<=p;i++)scanf("%lf%lf%lf",&pr[i].x,&pr[i].y,&pr[i].v);scanf("%lf%lf",&he.x,&he.y);for(i=1;i<=n;i++)scanf("%lf%lf",&te[i].x,&te[i].y);low=0;high=-1;for(i=1;i<=p;i++)for(j=1;j<=n;j++){g[i][j]=dis(pr[i],te[j])/pr[i].v;if(g[i][j]>high)high=g[i][j];}while(low<high){mid=(low+high)/2;if(ok(mid))high=mid-0.0000000001;else low=mid+0.0000000001;}printf("%.9lf\n",low+dis(ca,he)/ca.v);}return 0; }
转载于:https://www.cnblogs.com/dream-wind/archive/2012/07/23/2604649.html
HLG 1481 Attack of the Giant n-pus【二分+二分图完全匹配】相关推荐
- 我的所有优质博客全部开源啦(我自己原创的《ACM模板》《算法全家桶》《算法竞赛中的初等数论》 PDF免费下载)
你好呀ヾ(≧▽≦*)o 我是繁凡さん 这两年来我写了很多长篇文章,主要涉及数据结构,算法,程序设计竞赛,数学,计算几何等方面的内容: <数据结构>C语言版(清华严蔚敏考研版) 全书知识梳理 ...
- UCF 2021 Qualifying - H . Time to Eat + UCF HSPT 2020 - E . Use Giant Fans to Deal With Hurricanes?
题目: H . Time to Eat [ 问题 8933 ] [ 讨论 ] Description The UCF Programming Team has made it to the World ...
- 【蓝桥杯】【入门题】【算法提高VIP】1481:剪刀石头布
题目 1481:剪刀石头布 蓝桥杯刷题群已成立,微信后台回复[蓝桥杯],即可进入. 如果加入了之前的社群不需要重复加入. 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 编写程序实现&q ...
- Pig变飞机?AI为什么这么蠢 | Adversarial Attack
整理 | Jane 责编 | Jane 出品 | AI科技大本营(公众号id:rgznai100) [编者按]这篇文章的起意有两点:一是由刚刚过去的 315 打假日,智能语音机器人在过去一年拨出的超 ...
- Attack on Alpha-Zet
题目链接:https://nanti.jisuanke.com/t/28852 7998: Attack on Alpha-Zet 时间限制: 1 Sec 内存限制: 512 MB 提交: 28 ...
- HTTP Slow Attack测试工具SlowHTTPTest
HTTP Slow Attack测试工具SlowHTTPTest Slow Attack是HTTP常见的一种拒绝服务攻击方式.它通过消耗服务器的系统资源和连接数,导致Web服务器无法正常工作.常见的攻 ...
- How to attack a windows domain
How to attack a windows domain 分类: 网络技术2013-06-24 16:1919人阅读评论(0)收藏举报 I recommend double clicking th ...
- linux symbolic link attack tutorial
Yaseng · 2015/01/27 10:01 0×00 前言 Linux作为应用最广泛的开源系统,其中独特的文件系统可以算是支撑Linux强大功能 的核心组件之一,而在文件系统中,符号链接(sy ...
- SYN攻击SYN Attack
SYN攻击SYN Attack SYN Attack是一种DOS攻击方式.它利用的是TCP协议的漏洞,攻击目标,使其不在响应网络请求.在TCP协议中,需要三次握手,才能建立TCP连接.在握手过程中,客 ...
最新文章
- 科幻电影里的超能力?那不就是并发嘛!
- 远程访问,文件的压缩,ip地址的设置(9,11,12unit)
- 微信与服务器通讯失败,linux服务器微擎提示couldn’t resolve host api.weixin.qq.com解决办法...
- 联发科mt8516价格_智能语音助手宠儿——联发科MT8516智能AI音箱核心板
- javascript json_JavaScript 之 JSON.parse 导致大数精度丢失问题的解决方案
- 一些相当不错的php开源 AJAX聊天工具
- StackOverflow问题:How to share CMSComponentData between several components in Spartacus manner
- Oracle中索引位图转换的优势
- mysql in 查询优化_mysql in 集合查询优化问题。
- git status命令
- 使用python,爆破加密的rar压缩文件
- 【活体人脸识别】FaceBagNet论文翻译详解
- matlab计算最大特征向量,MATLAB求最大特征值和特征向量
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
- 【opencv4.3.0教程】12之图像的加add、减subtract、乘multiply、除divide
- 根据string查询是否是当月_发票勾选、查询、认证等25问!简直太全了!打印出来贴在桌子上学习!...
- 清华王牌专业建系70年,撑起中国半导体半壁江山,王兴李健都是系友
- 问题解决:The connection to the server xxxxx:6443 was refused - did you specify the right host or port?
- can收发器 rx_USB-CAN收发器
- 【Acm】算法之美—Crashing Balloon