题目

链接

给你一个圆锥(位于坐标原点,告诉你高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——数形结合的更多相关文章

  1. 2018CCPC吉林赛区 hdu6555~hdu6566

    2018CCPC吉林赛区(重现赛)- 感谢北华大学 A 基础数论. #include<bits/stdc++.h> using namespace std; typedef long lo ...

  2. UVa 1451 (数形结合 单调栈) Average

    题意: 给出一个01串,选一个长度至少为L的连续子串,使得串中数字的平均值最大. 分析: 能把这道题想到用数形结合,用斜率表示平均值,我觉得这个想法太“天马行空”了 首先预处理子串的前缀和sum,如果 ...

  3. HDU3045 Picnic Cows (斜率DP优化)(数形结合)

    转自PomeCat: "DP的斜率优化--对不必要的状态量进行抛弃,对不优的状态量进行搁置,使得在常数时间内找到最优解成为可能.斜率优化依靠的是数形结合的思想,通过将每个阶段和状态的答案反映 ...

  4. 【做题】TCSRM591 Div1 500 PyramidSequences——数形结合&思维

    题意:定义高度为\(x\)的金字塔数列为周期为\(2x-2\)的无限数列.它的每一个周期都是形如\(1,2,...,x-1,x,x-1,...,2\)的形式.记高度为\(x\)的金字塔数列第\(i\) ...

  5. UVA 1451 Average平均值 (数形结合,斜率优化)

    摘要:数形结合,斜率优化,单调队列. 题意:求一个长度为n的01串的子串,子串长度至少为L,平均值应该尽量大,多个满足条件取长度最短,还有多个的话,取起点最靠左. 求出前缀和S[i],令点Pi表示(i ...

  6. poj 1430 Binary Stirling Number 求斯特林数奇偶性 数形结合| 斯特林数奇偶性与组合数的关系+lucas定理 好题

    题目大意 求子集斯特林数\(\left\{\begin{matrix}n\\m\end{matrix}\right\}\%2\) 方法1 数形结合 推荐一篇超棒的博客by Sdchr 就是根据斯特林的 ...

  7. 紫书 例题8-9 UVa 1451 (数形结合)

    这道题用了数形结合, 真的牛逼, 完全想到不到还可以这么做 因为题目求的是平均值, 是总数除以个数, 这个时候就可以联系 到斜率, 也就是说转化为给你一堆点, 让你求两点之间的最大斜率 要做两个处理 ...

  8. HDU 4696 Answers (脑补+数形结合)

    题意 给一个图,每个点的出度为1,每个点的权值为1或者2.给Q个询问,问是否能找到一条路径的权值和M. 思路 由于每个点的出度为1,所以必然存在环.又因为c[i]只能取1或者2,可以组成任意值,所以只 ...

  9. BZOJ2659 [Beijing wc2012]算不出的算式 【数形结合】

    题目链接 BZOJ2659 题解 真没想到,, 观察式子 \[\sum\limits_{k = 1}^{\frac{p - 1}{2}} \lfloor \frac{kq}{p} \rfloor\] ...

随机推荐

  1. Zabbix的history相关数据表数据太大,执行表分区操作过程

    一.查询zabbix数据库大小 mysql> select table_schema, concat(truncate(sum(data_length)/1024/1024,2),' mb') ...

  2. SQL SERVER 字符串函数 STRING_SPLIT()

    定义: STRING_SPLIT()函数根据指定的分隔符将字符串拆分为子字符串行. ※STRING_SPLIT 要求兼容性级别至少为 130. (即SSMS 2016及以上版本) ※级别低于 130 ...

  3. 1、spring mvc jsp页面中文乱码

    jsp 页面头部 的page标签中加个 contentType="text/html;charset=utf-8"

  4. Springboot项目自动加载设置

    SpringBoot是允许项目自动加载的,但是需要在pom文件映入依赖库 1.导入依赖库 <dependency> <groupId>org.springframework.b ...

  5. IDEA插件之CheckStyle

    1.是个啥? CheckStyle是一个检测代码格式是否满足规范的工具,其中用得比较多的是Google规范和Sun规范 2.下载安装插件 File -> Settings -> Plugi ...

  6. 【LOJ】#3051. 「十二省联考 2019」皮配

    LOJ#3051. 「十二省联考 2019」皮配 当时我在考场上觉得这题很不可做... 当然,出了考场后再做,我还是没发现学校和城市是可以分开的,导致我还是不会 事实上,若一个城市投靠了某个阵营,学校 ...

  7. abstract class 与 interface

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  8. sklearn数据集

    数据集划分: 机器学习一般的数据集会划分为两个部分 训练数据: 用于训练,构建模型 测试数据: 在模型检验时使用,用于评估模型是否有效 sklearn数据集划分API: 代码示例文末! scikit- ...

  9. 20190804-Python基础 第一章

    学习爬虫的同时,补充学习更多Python的基础知识,才能让所学更加扎实. 至今,所学的很多东西,基础都不牢固,导致这些所学都是浅尝则止的皮毛,不能真正上战场,故借速成之心,踏实打牢基础,举一反三,以求 ...

  10. Mancala II

    题目描述 Mancala is a family of board games played around the world, sometimes called sowing games, or c ...