2018ccpc吉林 E:THE TOWER——数形结合
题目
给你一个圆锥(位于坐标原点,告诉你高h 和底面半径 r),和一个点(x,y,z)并告诉你这个点的速度,
让你求点和圆锥相撞的最小时间(保证一定相撞)
分析
易知,将直线的参数方程与圆锥曲面的方程联立,但是可能产生增根,具体情形如下:
其实我们不必区分具体情况,只需交点在曲面上的时间的最小值。
注意两点,一是判断交点在曲面上不能使用x,y约束,而应该使用z,试考虑如下情况:
二是可能与底面相交,也不用特判,只需与前面的时间取较小值。
#include<bits/stdc++.h>
using namespace std; double r, h, x, y, z, vx, vy, vz; int main()
{
int T, kase = ;
scanf("%d", &T);
while(T--)
{
scanf("%lf%lf", &r, &h);
scanf("%lf%lf%lf", &x, &y, &z);
scanf("%lf%lf%lf", &vx, &vy, &vz); double a = h*h*vx*vx + h*h*vy*vy - r*r*vz*vz;
double b = *h*h*x*vx + *h*h*y*vy - *r*r*z*vz + *r*r*h*vz;
double c = h*h*x*x + h*h*y*y - h*h*r*r - r*r*z*z + *r*r*h*z;
double detal = sqrt(b * b - * a *c);
double t1 = (-b + detal) / ( * a);
//double x1 = x + vx * t1;
double z1 = z + vz * t1;
double t2 = (-b - detal) / ( * a);
//double x2 = x + vx * t2;
double z2 = z + vz * t2; //printf("a:%lf b:%lf c:%lf\n", a, b, c);
//printf("detal:%lf t1:%lf t2:%lf\n", detal, t1, t2); //printf("Case %d: ", ++kase);
double ans = 1e18;
if(z1 >= && z1 <= h && t1 > ) ans = min(ans, t1); //²»ÄÜÓÃx,zÀ´ÅжÏ
if(z2 >= && z2 <= h && t2 > ) ans = min(ans, t2);
double tmpt = -z / vz;
double tmpx = x + vx * tmpt;
double tmpy = y + vy *tmpt;
if(fabs(vz)>1e-){
if(tmpx >= -r && tmpx <= r && tmpy >= -r && tmpy <= r && tmpt > ) ans = min(ans, tmpt);
} printf("Case %d: %.10lf\n", ++kase, ans);
}
return ;
}
参考链接:https://blog.csdn.net/du_mingm/article/details/89791220
2018ccpc吉林 E:THE TOWER——数形结合的更多相关文章
- 2018CCPC吉林赛区 hdu6555~hdu6566
2018CCPC吉林赛区(重现赛)- 感谢北华大学 A 基础数论. #include<bits/stdc++.h> using namespace std; typedef long lo ...
- UVa 1451 (数形结合 单调栈) Average
题意: 给出一个01串,选一个长度至少为L的连续子串,使得串中数字的平均值最大. 分析: 能把这道题想到用数形结合,用斜率表示平均值,我觉得这个想法太“天马行空”了 首先预处理子串的前缀和sum,如果 ...
- HDU3045 Picnic Cows (斜率DP优化)(数形结合)
转自PomeCat: "DP的斜率优化--对不必要的状态量进行抛弃,对不优的状态量进行搁置,使得在常数时间内找到最优解成为可能.斜率优化依靠的是数形结合的思想,通过将每个阶段和状态的答案反映 ...
- 【做题】TCSRM591 Div1 500 PyramidSequences——数形结合&思维
题意:定义高度为\(x\)的金字塔数列为周期为\(2x-2\)的无限数列.它的每一个周期都是形如\(1,2,...,x-1,x,x-1,...,2\)的形式.记高度为\(x\)的金字塔数列第\(i\) ...
- UVA 1451 Average平均值 (数形结合,斜率优化)
摘要:数形结合,斜率优化,单调队列. 题意:求一个长度为n的01串的子串,子串长度至少为L,平均值应该尽量大,多个满足条件取长度最短,还有多个的话,取起点最靠左. 求出前缀和S[i],令点Pi表示(i ...
- poj 1430 Binary Stirling Number 求斯特林数奇偶性 数形结合| 斯特林数奇偶性与组合数的关系+lucas定理 好题
题目大意 求子集斯特林数\(\left\{\begin{matrix}n\\m\end{matrix}\right\}\%2\) 方法1 数形结合 推荐一篇超棒的博客by Sdchr 就是根据斯特林的 ...
- 紫书 例题8-9 UVa 1451 (数形结合)
这道题用了数形结合, 真的牛逼, 完全想到不到还可以这么做 因为题目求的是平均值, 是总数除以个数, 这个时候就可以联系 到斜率, 也就是说转化为给你一堆点, 让你求两点之间的最大斜率 要做两个处理 ...
- HDU 4696 Answers (脑补+数形结合)
题意 给一个图,每个点的出度为1,每个点的权值为1或者2.给Q个询问,问是否能找到一条路径的权值和M. 思路 由于每个点的出度为1,所以必然存在环.又因为c[i]只能取1或者2,可以组成任意值,所以只 ...
- BZOJ2659 [Beijing wc2012]算不出的算式 【数形结合】
题目链接 BZOJ2659 题解 真没想到,, 观察式子 \[\sum\limits_{k = 1}^{\frac{p - 1}{2}} \lfloor \frac{kq}{p} \rfloor\] ...
随机推荐
- [转帖] 飞腾FT2000+ CPU的进展(2019.6)
中国长城:拟进一步收购飞腾股权,强化信息基础设施国产化平台地位 2019-06-26 09:28 http://www.sohu.com/a/323065095_100016383 今年年中的事情 浪 ...
- 异构平台mysql-oracle(ogg)安装部署
如图所示:源端采用Mysql库,目标端采用Oracle库 一.OGG安装配置(源端) 1.OGG下载 https://edelivery.oracle.com/EPD/Download/get_f ...
- 什么是文件存储NAS
阿里云文件存储(Network Attached Storage,简称 NAS)是面向阿里云 ECS 实例.E-HPC 和容器服务等计算节点的文件存储服务. 定义 阿里云文件存储 NAS 是一个可共享 ...
- Git在IDEA工具中快捷拉取代码
在拥有GitLab账号之后, 进入IDEA中,点击vcs菜单-->Checkout from Version Control-->Git 随后会出现一个弹框,输入git上的项目地址点击CL ...
- (十五)springMvc 拦截器
文章目录 定义拦截器 接口中三个方法 配置拦截器 多个拦截器的规则 定义拦截器 springMvc 中定义拦截器只需要实现一个接口 org.springframework.web.servlet.Ha ...
- Java:关于子类继承父类接口时,由于权限没有设定的更广,出错的一个小tip
今天在写笔记的时候,写的地方出现了小叉叉错号. 发现问题: 这里出错了!原因是因为在子类覆写父类的方法的时候,权限不能开的比父类更低! 加了public后,纠错成功. 由于接口类型下的方法默认都是pu ...
- 15.Ansible安装与配置简单版
Ansible是一个简单高效的自动化运维管理工具,用Python开发,能大批量管理N多台机器,可以并发的在多台机器上部署应用.安装软件.执行命令.配置和编排任务. 一.Ansible工作机制 从图中可 ...
- 12-MySQL DBA笔记-MySQL复制
第12章 MySQL复制 本章将为读者讲述MySQL的复制技术,首先,介绍最基础的主从复制,它是其他所有复制技术的基础,接着再为读者讲述各种复制架构的搭建,最后,列举了一些常见的复制问题及处理方式.复 ...
- python+django学习二
所有模型类型的准备和迁移 在setting.py中添加:AUTH_USER_MODEL = 'users.UserProfile' 继承用户模板 确保子项目的url现在都是空的, 在pycharm的f ...
- mycat sql timeout 问题解决
发现程序中有个批量update语句需要update 16000多条数据导致超时 2019-11-06 10:35:28.312 pool-9-thread-24 ERROR com.hp.nova.c ...