题意分析

这题一看没有什么思路

幸好我们机房的红太阳\(ghj1222\)切了这道题

首先我们考虑风跑一个来回之后人怎么样

就是跑了一个区间

也就是风跑了若干个来回之后 人跑了若干个区间

所以我们考虑求出距离最小的那个区间

距离是一个单峰函数 所以我们用三分

然后的话 问题就是求两条有向线段之间的最小距离

这也是一个单峰函数 所以我们用三分


我们需要处理出来风从一头走到另一头的人的走的向量

\[\frac{\overrightarrow{v}}{|\overrightarrow{v}|}\frac{v_w}{v_t}dis
\]

$dis: $风走的距离

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<string>
#include<queue>
#include<map>
#include<stack>
#include<list>
#include<set>
#include<deque>
#include<vector>
#include<ctime>
#define ll long long
#define inf 0x7fffffff
#define N 500008
#define IL inline
#define M 1008611
#define D double
#define eps 1e-7
#define R register
using namespace std;
template<typename T>IL void read(T &_)
{
T __=0,___=1;char ____=getchar();
while(!isdigit(____)) {if(____=='-') ___=0;____=getchar();}
while(isdigit(____)) {__=(__<<1)+(__<<3)+____-'0';____=getchar();}
_=___ ? __:-__;
}
/*-------------OI使我快乐-------------*/
struct Node
{
D xx,yy;
friend Node operator +(const Node &A,const Node &B)
{return (Node){A.xx+B.xx,A.yy+B.yy};}
friend Node operator -(const Node &A,const Node &B)
{return (Node){A.xx-B.xx,A.yy-B.yy};}
friend Node operator *(const Node &A,const D &B)
{return (Node){A.xx*B,A.yy*B};}
friend Node operator /(const Node &A,const D &B)
{return (Node){A.xx/B,A.yy/B};}
}fro_x,to_x,fro_y,to_y,tmp;
D v_x,v_y,d_x,d_y;
IL D qury_dis(Node now)
{return sqrt((now.xx*now.xx)+(now.yy*now.yy));}
IL D qury_ans(const Node &sx,const Node &tx,const Node &sy,const Node &ty)
{//三分最小的距离
Node tmpx=tx-sx,tmpy=ty-sy;
D le=0,ri=1,ans=0;
while((ri-le)>eps)
{
D mid=(ri-le)/3.0+le,mmid=ri-(ri-le)/3.0;
Node cdy,wzy,zjz,ghj;
cdy=sx+tmpx*mid;wzy=sy+tmpy*mid;
zjz=sx+tmpx*mmid;ghj=sy+tmpy*mmid;
//这里要注意的是 二者的进行是等比例的
D dis_cdy=qury_dis(wzy-cdy),dis_wzy=qury_dis(ghj-zjz);
if(dis_cdy>dis_wzy) le=mid,ans=dis_wzy;
else ri=mmid,ans=dis_cdy;
}
return ans;
}
IL D work(ll now)
{
Node cdy,wzy,zjz;
cdy=fro_x+tmp*now*2;wzy=cdy+tmp;zjz=wzy+tmp;
return min(qury_ans(cdy,wzy,fro_y,to_y),qury_ans(wzy,zjz,to_y,fro_y));
}
int main()
{
freopen("chaser.in","r",stdin);
freopen("chaser.out","w",stdout);
while(scanf("%lf%lf",&fro_x.xx,&fro_x.yy)!=EOF)
{
scanf("%lf%lf%lf",&to_x.xx,&to_x.yy,&v_x);
scanf("%lf%lf%lf%lf%lf",&fro_y.xx,&fro_y.yy,&to_y.xx,&to_y.yy,&v_y);
tmp=((to_x-fro_x)/qury_dis(to_x-fro_x)*v_x/v_y*qury_dis(to_y-fro_y));
//相当于是风跑一个来回之后
//人在其方向上走的向量
// printf("now is %.2f %.2f\n",tmp.xx,tmp.yy);
scanf("%lf%lf",&d_x,&d_y);
//三分区间对应的位置
ll le=0,ri=1e13;
while(ri-le>=5)
{
//ghj1222说 整数三分卡边界比较恶心 所以设置一个误差 然后暴力求就可以了
ll mid=(ri-le)/3+le,mmid=ri-(ri-le)/3;
D resa=work(mid),resb=work(mmid);
if(resa>resb) le=mid;
else ri=mmid;
}
D ans=1e18;
for(R ll i=le;i<=ri;++i)
ans=min(ans,work(i));
if(ans<d_x) puts("Dangerous");
else if(ans>=d_x&&ans<=d_y) puts("Perfect");
else puts("Miss");
}
fclose(stdin);
fclose(stdout);
return 0;
}

考试题T3的更多相关文章

  1. 考试题 T3

    题意分析 首先\(\%\%\%\%olinr\)以及花_Q\(julao\)当场切题 然后就是怎么求 \[max(|a-A|,|b-B|)=max(a-A,A-a,B-b,b-B)\] 我们令\(x_ ...

  2. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  3. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  4. T3 - 构建大型 Web 应用的 JavaScript 框架

    T3 是一个用于构建大型 Web 应用程序的客户端 JavaScript 框架.T3 和大多数的 JavaScript 框架不同.它的意思是一小部分的整体架构,它允许你建立可扩展的客户端代码.T3 应 ...

  5. [NOIP2015]运输计划 D2 T3 LCA+二分答案+差分数组

    [NOIP2015]运输计划 D2 T3 Description 公元2044年,人类进入了宇宙纪元. L国有n个星球,还有n-1条双向航道,每条航道建立在两个星球之间,这n-1条航道连通了L国的所有 ...

  6. 有三个线程T1 T2 T3,如何保证他们按顺序执行-转载

    T3先执行,在T3的run中,调用t2.join,让t2执行完成后再执行t3 在T2的run中,调用t1.join,让t1执行完成后再让T2执行 public class Test { // 1.现在 ...

  7. 现在有T1、T2、T3三个线程,怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用Join

    public class TestJoin { public static void main(String[] args) { Thread t1 = new Thread(new T1(), &q ...

  8. 学军NOI训练13 T3 白黑树

    唉,大学军有自己的OJ就是好,无限orz 只有周六的比赛是开放的囧,这场比赛最后因为虚拟机卡住没有及时提交…… 否则就能让大家看到我有多弱了…… 前两题题解写的很详细,可以自己去看,我来随便扯扯T3好 ...

  9. win8.1 64 安装用友T3+sql2005-64步骤

    1. 环境:win8.1 64 专业版  4G内存  .net framwork 3.5 2.初始过程及所需软件 安装sql2008数据库,安装完T3发现并不支持此数据库,运行T3老是出现连接数据时的 ...

随机推荐

  1. asp.net页如何获取母版页控件

    获取母版页的相关内容有两种方法 1 通过findcontrol找控件ID需要在此事件中~因为Page_load中时是先内容页加载然后才是母版页加载 protected void Page_LoadCo ...

  2. linux 安装php7 Nginx

    这里 记录下 本屌安装linux  下安装php7 即遇到的问题. wget http://cn2.php.NET/distributions/php-7.0.4.tar.gz tar zxvf ph ...

  3. CentOS6,7不同

    centos6与centos7,防火墙,开机自启不同 6用iptables,7用firewall-cmd http://www.cnblogs.com/liyuanhong/articles/7064 ...

  4. 1-为什么java的main方法必须是静态的

    为什么java的main方法必须是静态的   今天看类型信息时发现一个问题,不能再main方法中打印this关键字的信息,这时想起了之前的知识,不能再静态方法中调用this.理由很简单,this表示“ ...

  5. [转]go中的main函数和init函数

    Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main).这两个函数在定义时不能有任何的参数和返回值.虽然一个package里面可以 ...

  6. CoreDNS for kubernetes Service Discovery

    一.CoreDNS简介 Kubernetes包括用于服务发现的DNS服务器Kube-DNS. 该DNS服务器利用SkyDNS的库来为Kubernetes pod和服务提供DNS请求.SkyDNS2的作 ...

  7. MYSQL - JSON串中查找key对应的值

    1.建表 -- 建表 drop table if exists ta_product2; CREATE TABLE ta_product2( id int primary key auto_incre ...

  8. OpenGL中的像素包装理解

    OpenGL中的像素包装理解 像素包装 位图和像素图很少会被紧密包装到内存中.在许多硬件平台上,考虑到性能的原因位图和像素图的每一行的数据会从特殊的字节对齐地址开始.绝大多数编译 器会自动把变量和缓冲 ...

  9. CentOS 7.4 shell 不显示当前用户和路径的问题

    步骤如下:   vim ~/.bash_profile (不用管.bash_profile这个文件有几个,自己新建一个也是可以的)    在最后加上 export PS1='[\u@\h \W]\$' ...

  10. 让FIREDAC记录数据库的异常日志

    默认FIREDAC不会记录数据库的异常. 比如典型的,提交的时候,非空字段没有给值. 某些人还以为FIREDAC不能捕获数据库的异常,其实FIREDAC是可以捕获并处理数据库的异常事件的. 方法异常简 ...