pro:二维平面上,给点N个导弹的初始位置,射出方向,速度。问你是找一点,可以从这一点向任意方向发出拦截导弹,速度未V,最小化最大拦截导弹的时间。  如果要拦截一个导弹,必须在导弹发射之后才可以发射拦截导弹。 题意满足V>max(v导弹)。

sol:由于V>vmax,所以有二分的性质,那么这道题其实是个水题,(开始没注意到这个条件,一直不知道怎么去做);

N个导弹,我们把导弹的目的地内V*time的圆画出来,拦截导弹的发射位置在这个圆内,如果N个圆有交点,说明合法。 由于V>xmax,所以time越大,圆越大,且同一个导弹对应的圆有包含关系,所以满足二分性质。

现在的问题救是 :我们去找可能的关键点,使之被N个圆包含。 这样的关键点是圆与圆的交点,以及被包含的圆内一点(圆心也行,我的代码写的圆心)。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
const double eps=1e-;
const double pi=acos(-1.0);
struct point{
double x,y;
point(){}
point(double xx,double yy):x(xx),y(yy){}
};
double dot(point a,point b){ return a.x*b.x+a.y*b.y;}
double det(point a,point b){ return a.x*b.y-a.y*b.x;}
point operator +(point a,point b){ return point(a.x+b.x,a.y+b.y);}
point operator -(point a,point b){ return point(a.x-b.x,a.y-b.y);}
point operator *(point a,double x){ return point(a.x*x,a.y*x);}
double dist(point a,point b){ return sqrt(dot(a-b,a-b));}
struct Circle{
point p; double r;
}C[maxn];
point a[maxn],v[maxn],inter[maxn]; int N,tot; double V;
void CirinterCir(Circle a,Circle b)
{
double dis=dist(a.p,b.p);
if(dis>a.r+b.r+eps) return ;
if(a.r-dis>=b.r-eps) { inter[++tot]=b.p; return ;}
if(b.r-dis>=a.r-eps) { inter[++tot]=a.p; return ;}
double angle1=atan2(b.p.y-a.p.y,b.p.x-a.p.x);
double angle2=acos( (dis*dis+a.r*a.r-b.r*b.r)/(2.0*dis*a.r));
inter[++tot]=point(a.p.x+a.r*cos(angle1+angle2),a.p.y+a.r*sin(angle1+angle2));
inter[++tot]=point(a.p.x+a.r*cos(angle1-angle2),a.p.y+a.r*sin(angle1-angle2));
return ;
}
bool ok(point a)
{
rep(i,,N){
double dis=dist(a,C[i].p);
if(dis>C[i].r+eps) return false;
}
return true;
}
bool check(double Mid)
{
rep(i,,N) C[i].r=Mid*V,C[i].p=a[i]+v[i]*Mid;
tot=;
rep(i,,N) rep(j,i+,N) CirinterCir(C[i],C[j]);//cout<<tot<<endl;
rep(i,,tot) if(ok(inter[i])) return true;
return false;
}
int main()
{
while(~scanf("%d%lf",&N,&V)){
rep(i,,N){
double x,L;
scanf("%lf%lf%lf%lf%lf",&a[i].x,&a[i].y,&v[i].x,&v[i].y,&x);
L=sqrt(dot(v[i],v[i]));
v[i]=v[i]*(x/L);
}
int T=; double L=,R=,Mid,ans=;
while(T--){
Mid=(L+R)/;
if(check(Mid)) ans=Mid,R=Mid;
else L=Mid;
}
printf("%.4lf\n",ans);
}
return ;
}

HDU - 6167: Missile Interception (二分+圆的交)的更多相关文章

  1. hdu 3264 圆的交+二分

    Open-air shopping malls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  2. HDU 3467 (求五个圆相交面积) Song of the Siren

    还没开始写题解我就已经内牛满面了,从晚饭搞到现在,WA得我都快哭了呢 题意: 在DotA中,你现在1V5,但是你的英雄有一个半径为r的眩晕技能,已知敌方五个英雄的坐标,问能否将该技能投放到一个合适的位 ...

  3. HDU 3264 Open-air shopping malls ——(二分+圆交)

    纯粹是为了改进牛吃草里的两圆交模板= =. 代码如下: #include <stdio.h> #include <algorithm> #include <string. ...

  4. HDU 5130 Signal Interference --计算几何,多边形与圆的交面积

    题意: 求所有满足PB <= k*PA 的P所在区域与多边形的交面积. 解法: 2014广州赛区的银牌题,当时竟然没发现是圆,然后就没做出来,然后就gg了. 圆的一般式方程: 设A(x1,y1) ...

  5. HDU - 5130 :Signal Interference (多边形与圆的交)

    pro:A的监视区域是一个多边形. 如果A的监视区的内满足到A的距离到不超过到B的距离的K倍的面积大小.K<1 sol:高中几何体经验告诉我们满足题意的区域是个圆,那么就是求圆与多边形的交. # ...

  6. HDU - 2892:area (圆与多边形交 求面积)

    pro:飞行员去轰炸一个小岛,给出炸弹落地点的位置信息,以及轰炸半径:按顺时针或者逆时针给出小岛的边界点. 求被轰炸的小岛面积. sol:即是求圆和多边形的面积交. (只会套板子的我改头换面,先理解然 ...

  7. hdu 3264 09 宁波 现场 E - Open-air shopping malls 计算几何 二分 圆相交面积 难度:1

    Description The city of M is a famous shopping city and its open-air shopping malls are extremely at ...

  8. 【计算几何】【二分】【随机增量法】hdu6167 Missile Interception

    n个半径为R的圆是否有公共部分,等价于询问是否存在一个半径小于R的圆,能覆盖所有n个圆的圆心. 对这n个点求最小圆覆盖即可.从网上扒了个随机增量法的代码. 这样算上二分,复杂度就是nlogn了. #i ...

  9. hdu 3264(枚举+二分+圆的公共面积)

    Open-air shopping malls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

随机推荐

  1. Springboot 使用PageHelper分页插件实现分页

    一.pom文件中引入依赖 二.application.properties中配置以下内容(二选一方案) 第一种:pagehelper.helper-dialect=mysqlpagehelper.re ...

  2. 2018.9.22 NOIP模拟赛

    *注意:这套题目应版权方要求,不得公示题面. 从这里开始 Problem A 妹子 Problem B 旅程 Problem C 老大 因为业务水平下滑太严重,去和高一考NOIP模拟,sad... P ...

  3. webpack(import路径配置)(自动打开浏览器)(自定义运行命令)

  4. CSS常用伪类

    css伪类 :after 在元素后面插入内容 :hover 鼠标移入时进行 :before 在元素前面插入内容 :link 未选中的链接 :active 点击后产生什么变化 :nth-child 匹配 ...

  5. Pandas 基础(4) - 读/写 Excel 和 CSV 文件

    这一节将分别介绍读/写 Excel 和 CSV 文件的各种方式: - 读入 CSV 文件 首先是准备一个 csv 文件, 这里我用的是 stock_data.csv, 文件我已上传, 大家可以直接下载 ...

  6. 力扣(LeetCode)482. 密钥格式化

    给定一个密钥字符串S,只包含字母,数字以及 '-'(破折号).N 个 '-' 将字符串分成了 N+1 组.给定一个数字 K,重新格式化字符串,除了第一个分组以外,每个分组要包含 K 个字##符,第一个 ...

  7. 对啊英语音标---二、ghywr这些辅音怎么发音

    对啊英语音标---二.ghywr这些辅音怎么发音 一.总结 一句话总结:对比法,和汉语拼音做对比 对比法,和汉语拼音做对比 1.清辅音和浊辅音的区别是什么? 清辅音-[不需要声带震动]就能发出的音节: ...

  8. hive新功能cube和rollup

    1.cube简称数据魔方,可以实现hive多个任意维度的查询,cube(a,b,c)则首先会对(a,b,c)进行group by,然后依次是(a,b),(a,c),(a),(b,c),(b),(c), ...

  9. 【原创】一篇学会vue路由配置 、 动态路由 、多层路由(实例)

    先来看看效果图: 为了方便讲解,我没有使用vue脚手架,如果需要的,可以留言跟我要.不多说开工: 首先,html先组上 <div id="app"> <div&g ...

  10. Shiro集成web环境[Springboot]-认证与授权

    Shiro集成web环境[Springboot]--认证与授权 在登录页面提交登陆数据后,发起请求也被ShiroFilter拦截,状态码为302 <form action="${pag ...