SGU 204. Little Jumper
204. Little Jumper
time limit per test: 0.5 sec.
memory limit per test: 65536 KB
input: standard
output: standard
Little frog Georgie likes to jump. Recently he have discovered the new playground that seems the perfect place to jump.
Recently the new jumping exercise has become very popular. Two vertical walls are placed on the playground, each of which has a hole.
The lower sides of the holes in the walls are on heights b1 and b2 respectively, and upper sides on heights t1 and t2. Walls are parallel and placed on distance l from each other.
The jumper starts at the distance ds from the first wall. It jumps through the first hole and lands between the walls. After that from that point he jumps through the second hole. The goal is to land exactly at the distance df from the second wall.
Let us describe the jump. The jumper starts from the specified point and starts moving in some chosen direction with the speed not exceeding some maximal speed v, determined by the strength of the jumper. The gravity of g forces him down, thus he moves along the parabolic trajectory.
The jumper can choose different starting speeds and different directions for his first and second jump.
Of course, The jumper must not attempt to pass through the wall, although it is allowed to touch it passing through the hole, this does not change the trajectory of the jump. The jumper is not allowed to pass through both holes in a single jump.
Find out, what must be the maximal starting speed of the jumper so that he could fulfil the excersise.
Input
Input file contains one or more lines, each of which contains eight real numbers, separated by spaces and/or line feeds. They designate b1, t1, b2, t2, l, ds, df and g. All numbers are in range from 10-2 to 103, t1≥ b1 + 10-2, t2≥ b2 + 10-2.
Output
For each line of the input file output the smallest possible maximal speed the jumper must have to fulfil the exercise. If it is impossible to fulfil it, output -1. Your answer must be accurate up to 10-4.
Sample test(s)
Input
0.3 1.0 0.5 0.9 1.7 1.2 2.3 9.8
0.6 0.8 0.6 0.8 2.4 0.3 1.5 0.7
Output
5.2883
1.3127
附送中文题意
题意
有只小青蛙要从两个竖起来的间隔为\(l\)的,各自有两个洞,分别以上部离地高度和下部离地高度描述,\(t_1,\ b_1,\ t_2,\ b_2\)的隔板跳过去。要求跳两次,一次从离第一块隔板\(d_s\)距离处以初速度\(v_1\),方向自定,跳进隔板间,落脚点自定,一次以速度\(v_2\),方向自定,从另外一边跳出来落在离第二块隔板\(d_t\)处,要你求最小的速度,即\(\min(\ max(\ v_1,\ \ v_2\ )\ )\)。
参见此图:

考虑一次跳跃,从\((0,\ 0)\)跳到\((x_2,\ 0)\),以高度\(y_1\)越过在\(x_1\)处的障碍,求最小速度\(v\)。
设x方向上的速度为\(v_x\),y为\(v_y\),那么高y和远x成方程。设时间$t=\frac{x}{v_x} \(,那么\)y = \frac{v_y + v_y - t \times g}{2}\times t=t\times v_y - \frac{t^2}{2}\times g=\frac{x\times v_y}{v_x} - \frac{x^2\times g}{2\times v_x^2}\(;
用\)v_x, v_y$表示得:
\]
对于两组点:\((x_1,y_1)\),\((x_2,y_2)\),可以通过解方程得出\((v_x,v_y)\),那么初始速度即为\(\sqrt{v_x^2+v_y^2}\)。
\]
\]
然后没了。。
notice
如果出射角为45度为最优,但是考虑到“洞”的限制,发现,如果45度可以通过,则取45度作为出射角,否则如果45度的抛物线交于洞顶上方时,取通过上方端点的点在抛物线上,否则取下方点,见下图(引用自Vergissmeinnicht):

其他没啥了。。。1A的。。
#include <cstdio>
#include <cstring>
#include <cmath>
#define max(x, y) ((x) < (y) ? (y) : (x))
typedef double DB;
const DB eps = 1e-12;
DB ds, df, t1, t2, b1, b2, dist, g;
#define sqr(x) ((x) * (x))
DB calc(DB s, DB y2, DB y1, DB x1, DB x2) {
DB jud = x1 - x1 * x1 / x2;
if(y1 <= jud && jud <= y2) return x2 * g;
if(jud < y1) {
y2 = 0.0;
} else {
y1 = y2;
y2 = 0.0;
}
DB vx2 = (sqr(x1) * x2 * g - x1 * sqr(x2) * g) / 2 / (x1 * y2 - x2 * y1);
DB vy2 = (sqr(2 * y1 * vx2 + sqr(x1) * g) / vx2 / sqr(x1) / 4);
//printf("%lf %lf\n", vx2, vy2);
return vx2 + vy2;
}
DB calc(DB pos) {
return max(calc(0.0, t1, b1, ds, pos + ds), calc(0.0, t2, b2, dist - pos, dist - pos + df));
}
int main() {
#ifndef ONLINE_JUDGE
freopen("204.in", "r", stdin);
freopen("204.out", "w", stdout);
#endif
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &b1, &t1, &b2, &t2, &dist, &ds, &df, &g) != EOF) {
DB l = 0, r = dist;
while(eps < r - l) {
DB m1, m2;
m1 = l + (r - l) / 3;
m2 = l + (r - l) / 3 * 2;
DB a1, a2;
a1 = calc(m1);
a2 = calc(m2);
if(a1 < a2) r = m2;
else l = m1;
}
DB ans = sqrt(calc((l + r) / 2));
printf("%.4lf\n", ans);
}
return 0;
}
SGU 204. Little Jumper的更多相关文章
- PIC10F200/202/204/206/220/222/320/322芯片解密程序复制多少钱?
PIC10F200/202/204/206/220/222/320/322芯片解密程序复制多少钱? PIC10F单片机芯片解密型号: PIC10F200解密 | PIC10F202解密 | PIC10 ...
- PHP build notes - WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 3.0, min: 204, excluded: 3.0).
WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 3.0, ...
- ShareSDK 集成 Google+ 登录 400. Error:redirect_uri_mismatch 和 Error Domain=ShareSDKErrorDomain Code=204
最近在集成ShareSDK中 Google+ 登录授权时候 出现了如下几个问题 1. 400. Error:redirect_uri_mismatch 出现这种情况, redirectUri应 ...
- SGU 495. Kids and Prizes
水概率....SGU里难得的水题.... 495. Kids and Prizes Time limit per test: 0.5 second(s)Memory limit: 262144 kil ...
- ACM: SGU 101 Domino- 欧拉回路-并查集
sgu 101 - Domino Time Limit:250MS Memory Limit:4096KB 64bit IO Format:%I64d & %I64u Desc ...
- 【SGU】495. Kids and Prizes
http://acm.sgu.ru/problem.php?contest=0&problem=495 题意:N个箱子M个人,初始N个箱子都有一个礼物,M个人依次等概率取一个箱子,如果有礼物则 ...
- SGU 455 Sequence analysis(Cycle detection,floyd判圈算法)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=455 Due to the slow 'mod' and 'div' operati ...
- SGU 422 Fast Typing(概率DP)
题目大意 某人在打字机上打一个字符串,给出了他打每个字符出错的概率 q[i]. 打一个字符需要单位1的时间,删除一个字符也需要单位1的时间.在任意时刻,他可以花 t 的时间检查整个打出来的字符串,并且 ...
- sgu 104 Little shop of flowers 解题报告及测试数据
104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB 问题: 你想要将你的 ...
随机推荐
- 初识python版本
区别一: python2x:源码重复不规范. python3x:重新整理规范了源码. 区别二: python2x: 默认的编码方式ascii,显示中文需要首行添加:# _*_ encoding: u ...
- java类加载过程以及双亲委派机制
前言:最近两个月公司实行了996上班制,加上了熬了两个通宵上线,状态很不好,头疼.牙疼,一直没有时间和精力写博客,也害怕在这样的状态下写出来的东西出错.为了不让自己荒废学习的劲头和习惯,今天周日,也打 ...
- Python --Redis Hash操作
一.Redis Hash操作 Redis 数据库hash数据类型是一个string类型的key和value的映射表,适用于存储对象.Redis 中每个 hash 可以存储 232 - 1 键值对(40 ...
- 《转》sklearn参数优化方法
sklearn参数优化方法 http://www.cnblogs.com/nolonely/p/7007961.html 学习器模型中一般有两个参数:一类参数可以从数据中学习估计得到,还有一类参 ...
- [吴恩达机器学习笔记]13聚类K-means
13.聚类 觉得有用的话,欢迎一起讨论相互学习~Follow Me 13.1无监督学习简介 从监督学习到无监督学习 在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负 ...
- 我的Git之旅(1)---git安装、github注册以及一些基本命令
蚂蚁作为一个混码农届的新人来说,看到什么东西都觉得高大上的感觉.最近接触到了git,有种蠢蠢欲动的感觉,想 试一把.因此开启了我的Git之旅.废话不多说,开始我的git之旅. 1.git服务器的选择 ...
- ACM-ICPC2018 沈阳赛区网络预赛-E-The cake is a lie
You promised your girlfriend a rounded cake with at least SS strawberries. But something goes wrong, ...
- 2017 国庆湖南 Day3
期望得分:100+30+60=190 实际得分:10+0+55=65 到了233 2是奇数位 或223 第2个2是偶数位就会223 .233 循环 #include<cstdio> #de ...
- HDU 1811 拓扑排序 并查集
有n个成绩,给出m个分数间的相对大小关系,问是否合法,矛盾,不完全,其中即矛盾即不完全输出矛盾的. 相对大小的关系可以看成是一个指向的条件,如此一来很容易想到拓扑模型进行拓扑排序,每次检查当前入度为0 ...
- HDU 1695 容斥
又是求gcd=k的题,稍微有点不同的是,(i,j)有偏序关系,直接分块好像会出现问题,还好数据规模很小,直接暴力求就行了. /** @Date : 2017-09-15 18:21:35 * @Fil ...