Codeforces Gym 100531J Joy of Flight 变换坐标系
Joy of Flight
题目连接:
http://codeforces.com/gym/100531/attachments
Description
Jacob likes to play with his radio-controlled aircraft. The weather today is pretty windy and Jacob has
to plan flight carefully. He has a weather forecast — the speed and direction of the wind for every second
of the planned flight.
The plane may have airspeed up to vmax units per second in any direction. The wind blows away plane
in the following way: if airspeed speed of the plane is (vx, vy) and the wind speed is (wx, wy), the plane
moves by (vx + wx, vw + wy) each second.
Jacob has a fuel for exactly k seconds, and he wants to learn, whether the plane is able to fly from start
to finish in this time. If it is possible he needs to know the flight plan: the position of the plane after
every second of flight.
Input
The first line of the input file contains four integers Sx, Sy, Fx, Fy — coordinates of start and finish
(−10 000 ≤ Sx, Sy, Fx, Fy ≤ 10 000).
The second line contains three integers n, k and vmax — the number of wind condition changes, duration
of Jacob’s flight in seconds and maximum aircraft speed (1 ≤ n, k, vmax ≤ 10 000).
The following n lines contain the wind conditions description. The i-th of these lines contains integers
ti
Output
The first line must contain “Yes” if Jacob’s plane is able to fly from start to finish in k seconds, and “No”
otherwise.
If it can to do that, the following k lines must contain the flight plan. The i-th of these lines must contain
two floating point numbers x and y — the coordinates of the position (Pi) of the plane after i-th second
of the flight.
The plan is correct if for every 1 ≤ i ≤ k it is possible to fly in one second from Pi−1 to some point
Qi
, such that distance between Qi and Pi doesn’t exceed 10−5
, where P0 = S. Moreover the distance
between Pk and F should not exceed 10−5 as well.
Sample Input
1 1 7 4
2 3 10
0 1 2
2 2 0
Sample Output
Yes
3 2.5
5 2.5
7 4
Hint
题意
给你一个起点和终点,然后会有风,问你能否在k秒内到达终点
如果可以的话,就输出每一秒之后,你在哪儿
题解:
和CF的某道题一样的,把坐标系变换一下,把风直接的按在终点倒着跑
然后直接看一下时间是否小于等于k就好了
如果小于的话,就直接跑平均速度就好了
代码
#include<bits/stdc++.h>
using namespace std;
double sx,sy,fx,fy;
int n,k,t[20005];
double v,wx[20005],wy[20005];
double vx,vy;
int tot = 0;
double winx=0,winy=0;
int check(int mid)
{
tot = 0,winx = winy = 0;
double ex = fx,ey = fy;
for(int i=0;i<mid;i++)
{
if(tot<n&&t[tot]==i)
winx=wx[tot],winy=wy[tot],tot++;
ex-=winx,ey-=winy;
}
double dis = sqrt((ex-sx)*(ex-sx)+(ey-sy)*(ey-sy));
if(dis/v>mid)return 0;
return 1;
}
int main()
{
freopen("joy.in","r",stdin);
freopen("joy.out","w",stdout);
cin>>sx>>sy>>fx>>fy;
cin>>n>>k>>v;
for(int i=0;i<n;i++)
cin>>t[i]>>wx[i]>>wy[i];
int L = 0;
for(;L<=k+5;L++)
if(check(L))
break;
if(L>k)return puts("No");
double ex = fx,ey = fy;
tot = winx = winy = 0;
for(int i=0;i<L;i++)
{
if(tot<n&&t[tot]==i)
winx=wx[tot],winy=wy[tot],tot++;
fx-=winx,fy-=winy;
}
double l = fx - sx;
double h = fy - sy;
double dis = sqrt(l*l+h*h);
double vx = v * l / dis;
double vy = v * h / dis;
tot = winx = winy = 0;
puts("Yes");
if(L==0)L++;
for(int i=0;i<L-1;i++)
{
if(tot<n&&t[tot]==i)
winx=wx[tot],winy=wy[tot],tot++;
sx += vx + winx;
sy += vy + winy;
printf("%.6f %.6f\n",sx,sy);
}
for(int i=L;i<=k;i++)
printf("%.6f %.6f\n",ex,ey);
}
Codeforces Gym 100531J Joy of Flight 变换坐标系的更多相关文章
- Gym 100531J Joy of Flight (几何)
题意:你从开始坐标到末尾坐标,要经过 k 秒,然后给你每秒的风向,和飞机的最大速度,问能不能从开始到末尾. 析:首先这个风向是不确定的,所以我们先排除风向的影响,然后算出,静风是的最小速度,如果这都大 ...
- Codeforces Gym 101252D&&floyd判圈算法学习笔记
一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1. 题解:都不到100天就AFO了才来学这floyd判圈 ...
- Codeforces Gym 101190M Mole Tunnels - 费用流
题目传送门 传送门 题目大意 $m$只鼹鼠有$n$个巢穴,$n - 1$条长度为$1$的通道将它们连通且第$i(i > 1)$个巢穴与第$\left\lfloor \frac{i}{2}\rig ...
- Codeforces Gym 101623A - 动态规划
题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求划分成最少的段数,然后将这些段排序使得新序列单调不减. 考虑将相邻的相等的数缩成一个数. 假设没有分成了$n$段,考虑最少能够减少多少划分 ...
- 【Codeforces Gym 100725K】Key Insertion
Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...
- Codeforces gym 101343 J.Husam and the Broken Present 2【状压dp】
2017 JUST Programming Contest 2.0 题目链接:Codeforces gym 101343 J.Husam and the Broken Present 2 J. Hu ...
- codeforces gym 100553I
codeforces gym 100553I solution 令a[i]表示位置i的船的编号 研究可以发现,应是从中间开始,往两边跳.... 于是就是一个点往两边的最长下降子序列之和减一 魔改树状数 ...
- CodeForces Gym 100213F Counterfeit Money
CodeForces Gym题目页面传送门 有\(1\)个\(n1\times m1\)的字符矩阵\(a\)和\(1\)个\(n2\times m2\)的字符矩阵\(b\),求\(a,b\)的最大公共 ...
- Codeforces GYM 100876 J - Buying roads 题解
Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...
随机推荐
- SPF详解2
什么是SPF? 这里的SPF不是防晒指数,而是指Sender Policy Framework.翻译过来就是发信者策略架构,比较拗口,通常都直接称为SPF. SPF是跟DNS相关的一项技术,它 ...
- 查找指定目录下的文件 .xml
pre{ line-height:1; color:#9f1d66; background-color:#cfe4e4; font-size:16px;}.sysFunc{color:#5d57ff; ...
- 【LeetCode】28 - Implement strStr()
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- [转载]我读过最好的Epoll模型讲解
转载来自:http://blog.csdn.net/mango_song/article/details/42643971 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行 ...
- Myeclipse2014 自带的报表功能 与 Eclipse BIRT
Myeclipse2014 自带的报表功能跟 Eclipse BIRT 差不多,但不兼容 1.只能是MyEclipse Web projects 或者 Report Web project不支持B ...
- Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]
mvn war:war命令出错: 原因: maven的web项目默认的webroot是在src\main\webapp.如果在此目录下找不到web.xml就抛出以上的异常. 解决方案: 在pom.xm ...
- HDU ACM 1515 Anagrams by Stack
Anagrams by Stack Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- SharePoint咨询师之路:备份和恢复系列--制定备份计划
本来想研究下如何做数据库服务器的集群,然而突然被同事问起如何在部署SharePoint服务场的时候做备份和恢复的计划,就先来复习和研究一下. 本系列包括: 备份服务器场和配置 备份web和服务应用程序 ...
- System.Data.SqlTypes.SqlNullValueException: 数据为空。不能对空值调用此方法或
有可能读出的数据为NULL,可以这样改: 方法一:while (reader.Read()){ for (int i = 0; i < 7; i++) { if (reader.IsDBNull ...
- effective c++ (一)
条款01:把C++看作一个语言联邦 C++是一种多重范型编程语言,一个同时支持过程(procedural),面向对象(object-oriented),函数形式(functional),泛型形式(ge ...