两题都不难。

对于D题,可以使用相对移动,把吹aircraft移动变成相反方向的待援点的移动。假设此时时间为t,把aircraft的速度设为Vmax,看待援点在飞船最大速度飞行t秒的范围内,注意风向变化的时间点即可。其实很明显的二分。。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
int x1,y1,x2,y2;
double v,t;
int fx,fy,sx,sy; double dis(double x,double y){
return x*x+y*y;
} bool ok(double st){
if(st<=t){
if(dis(x2-fx*st-x1,y2-fy*st-y1)-v*st*v*st>1e-) return false;
else return true;
}
else{
st-=t;
if(dis(x2-fx*t-sx*st-x1,y2-fy*t-sy*st-y1)-v*v*(st+t)*(st+t)>1e-) return false;
return true;
}
} int main(){
while(scanf("%d%d%d%d",&x1,&y1,&x2,&y2)!=EOF){
scanf("%lf%lf",&v,&t);
scanf("%d%d%d%d",&fx,&fy,&sx,&sy);
double l=,r=1e9;
double ans=;
while(r-l>1e-){
double m=(r+l)/;
if(ok(m)){
ans=m;
r=m;
}
else{
l=m;
}
}
printf("%.8lf\n",ans);
}
return ;
}

对于E题,我觉得我是傻B了。可以求出每个国家到其他国家的最近距离,当然了,此时使用BFS,求出每个点到从本国的边缘点出发的最近距离。

首先假设交接点在某个国家,这样求三次都取最近距离。

再假设交接点在空白的点上,取某点到三个国家最近的距离和。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue> using namespace std; char str[][];
int n,m;
int dis[][][]; struct Node{
int x,y;
Node(){}
Node(int xx,int yy){
x=xx,y=yy;
}
}; int dir[][]={
{,},
{,},
{-,},
{,-}
}; int p[]; bool ok(int x,int y){
if(x<||x>n||y<||y>m) return false;
return true;
} void slove(int ind){
queue<Node>que;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(str[i][j]==''+ind)
que.push(Node(i,j)),dis[ind][i][j]=,p[ind]=;
}
}
Node tmp,nxt;
while(!que.empty()){
tmp=que.front();
que.pop();
for(int k=;k<;k++){
nxt.x=tmp.x+dir[k][];
nxt.y=tmp.y+dir[k][];
if(!ok(nxt.x,nxt.y)) continue;
if(dis[ind][nxt.x][nxt.y]!=-) continue;
if(str[nxt.x][nxt.y]=='#') continue;
dis[ind][nxt.x][nxt.y]=dis[ind][tmp.x][tmp.y]+;
if(str[nxt.x][nxt.y]>=''&&str[nxt.x][nxt.y]<=''){
if(str[nxt.x][nxt.y]==''&&p[]==-) p[]=dis[ind][nxt.x][nxt.y];
if(str[nxt.x][nxt.y]==''&&p[]==-) p[]=dis[ind][nxt.x][nxt.y];
if(str[nxt.x][nxt.y]==''&&p[]==-) p[]=dis[ind][nxt.x][nxt.y];
}
que.push(Node(nxt.x,nxt.y));
}
}
} int main(){
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=;i<=n;i++){
scanf("%s",str[i]+);
}
int ans=-;
memset(dis[],-,sizeof(dis[]));
memset(p,-,sizeof(p));
slove();
if(p[]!=-&&p[]!=-&&p[]!=-) ans=ans==-?p[]+p[]+p[]-:min(ans,p[]+p[]+p[]-);
memset(dis[],-,sizeof(dis[]));
memset(p,-,sizeof(p));
slove();
if(p[]!=-&&p[]!=-&&p[]!=-) ans=ans==-?p[]+p[]+p[]-:min(ans,p[]+p[]+p[]-);
memset(dis[],-,sizeof(dis[]));
memset(p,-,sizeof(p));
slove();
if(p[]!=-&&p[]!=-&&p[]!=-) ans=ans==-?p[]+p[]+p[]-:min(ans,p[]+p[]+p[]-);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(dis[][i][j]==-) continue;
if(dis[][i][j]==-) continue;
if(dis[][i][j]==-) continue;
ans=ans==-?dis[][i][j]+dis[][i][j]+dis[][i][j]-:min(ans,dis[][i][j]+dis[][i][j]+dis[][i][j]-);
}
}
printf("%d\n",ans); }
return ;
}

CF #327 DIV2 D、E的更多相关文章

  1. cf 442 div2 F. Ann and Books(莫队算法)

    cf 442 div2 F. Ann and Books(莫队算法) 题意: \(给出n和k,和a_i,sum_i表示前i个数的和,有q个查询[l,r]\) 每次查询区间\([l,r]内有多少对(i, ...

  2. CF#581 (div2)题解

    CF#581 题解 A BowWow and the Timetable 如果不是4幂次方直接看位数除以二向上取整,否则再减一 #include<iostream> #include< ...

  3. [CF#286 Div2 D]Mr. Kitayuta's Technology(结论题)

    题目:http://codeforces.com/contest/505/problem/D 题目大意:就是给你一个n个点的图,然后你要在图中加入尽量少的有向边,满足所有要求(x,y),即从x可以走到 ...

  4. CF 192 Div2

    A.Cakeminator 暴搞之,从没有草莓覆盖的行.列遍历 char map[30][30]; int vis[30][30]; int hang[30],lie[30]; int main() ...

  5. codeforces round #257 div2 C、D

    本来应该认真做这场的.思路都是正确的. C题,是先该横切完或竖切完,无法满足刀数要求.再考虑横切+竖切(竖切+横切), 由于横切+竖切(或竖切+横切)会对分割的东西产生交叉份数.从而最小的部分不会尽可 ...

  6. Codeforces Round #327 (Div2) A~E

    CodeForces 591A 题意:在距离为L的两端A,B,相向发射魔法,a(以P1的速度)-->B,A<--b(以P2的速度).假设a-->B,途中相遇,则返回到原点A<- ...

  7. CF#603 Div2

    差不多半年没打cf,还是一样的菜:不过也没什么,当时是激情,现在已是兴趣了,开心就好. A Sweet Problem 思维,公式推一下过了 B PIN Codes 队友字符串取余过了,结果今天早上一 ...

  8. CF R631 div2 1330 E Drazil Likes Heap

    LINK:Drazil Likes Heap 那天打CF的时候 开场A读不懂题 B码了30min才过(当时我怀疑B我写的过于繁琐了. C比B简单多了 随便yy了一个构造发现是对的.D也超级简单 dp了 ...

  9. CF 197 DIV2 Xenia and Bit Operations 线段树

    线段树!!1A 代码如下: #include<iostream> #include<cstdio> #define lson i<<1 #define rson i ...

随机推荐

  1. 【Kafka】《Kafka权威指南》——从Kafka读取数据

    应用程序使用 KafkaConsumer向 Kafka 订阅主题,并从订阅的主题上接收消息 . 从 Kafka 读取数据不同于从其他悄息系统读取数据,它涉及一些独特的概念和想法.如果不先理解 这些概念 ...

  2. Educational Codeforces Round 45

    A. 一个小模拟    不解释 //By SiriusRen #include <bits/stdc++.h> using namespace std; long long n,m,a,b ...

  3. ACM_百度的面试(单调栈)

    百度的面试 Time Limit: 2000/1000ms (Java/Others) Problem Description: 在一个二维平面,从左到右竖立n根高度分别为:a[1],a[2],... ...

  4. 安装office1406错误!!!急死个人。。。。。

    因为用到Microsoft.Office.Interop.Word,将word转PDF.所以在服务器上需要安装office,但是报错1406,不能将值插入注册表..... 然后百度各种问题,说需要将注 ...

  5. MVC系列学习(九)-DTO的使用

    本次学习用的数据库,如下 1.什么是DTO:DataTransferObject 即数据传输对象,服务端的客户端的通信,自动定义个小的实体类,里面只包含我们需要传输的属性 2.不用DTO会有什么问题 ...

  6. CSS布局——三栏布局

    说到三栏布局,很多都会提到圣杯布局和双飞翼布局这两个经典的三栏布局方式.于是,我在网上搜了一些相关资料,阅读并跟着代码敲了一遍,发现在处理三栏布局上,他们采用的都是两边栏固定,中间栏自适应的策略.在处 ...

  7. Product Device Lot

    Product是指产品: 这个Product可以在不同的设备类型上生产, 同一类型的设备也可能硬件有差异,所以会有相对应的Device(Recipe): 同一Product(或同一Device)由于数 ...

  8. Robomongo 0.9.0 连接mongo数据库时,提示连接失败 的解决方案

    Robomongo 0.9.0 连接mongo数据库时,提示连接失败.(IP和端口号确定是对的) 基本注意点: 1.mongodb服务打开,打开时,指定端口号,默认为27017,使用默认值,则不用指定 ...

  9. Hive扩展功能(五)--HiveServer2服务高可用

    软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...

  10. html5——伸缩布局

    基本概念 1.主轴:Flex容器的主轴主要用来配置Flex项目,默认是水平方向 2.侧轴:与主轴垂直的轴称作侧轴,默认是垂直方向的 3.方向:默认主轴从左向右,侧轴默认从上到下 4.主轴和侧轴并不是固 ...