题目链接

传送门

题意

告诉你圆锥的底部圆的半径和圆锥的高,再给你一个点的坐标及其运动向量,问你这个点什么时候会与这个圆锥相撞。

思路

比赛场上二分一直没过但是有人二分过了,今天再写这题想再试下二分,最后发现了自己的问题所在(可能这个点在\(check\)的时候已经穿过圆锥但是我的代码会把它当成还没达到,所以就会使得\(lb=mid\))。最后按照公式求解过了。
圆锥表面方程为
\[ \begin{aligned} \begin{cases} \frac{h-z}{h}=\frac{R}{r}\\ x^2+y^2= R \end{cases} \end{aligned} \]
然后设相撞时间为\(t\),则点的坐标变成
\[ x=x_0+v_xt\\ y=y_0+v_yt\\ z=z_0+v_zt \]
然后联立化简得到
\[ (v_x^2+v_y^2-\frac{r^2v_z^2}{h^2})t^2+2(v_xx_0+v_yy_0-\frac{z_0v_zr^2}{h^2}+\frac{v_zr^2}{h})t+x_0^2+y_0^2-\frac{r^2}{h^2}(h-z_0)^2=0 \]
求得
\[ t_1=\frac{-b+\sqrt{b^2-4ac}}{2a}\\ t_2=\frac{-b-\sqrt{b^2-4ac}}{2a} \]
最后再\(check\)是否恰好相撞取最小值即可。

代码实现如下

#include <set>
#include <map>
#include <deque>
#include <queue>
#include <stack>
#include <cmath>
#include <ctime>
#include <bitset>
#include <cstdio>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;typedef long long LL;
typedef pair<LL, LL> pLL;
typedef pair<LL, int> pLi;
typedef pair<int, LL> pil;;
typedef pair<int, int> pii;
typedef unsigned long long uLL;#define lson rt<<1
#define rson rt<<1|1
#define lowbit(x) x&(-x)
#define name2str(name) (#name)
#define bug printf("*********\n")
#define debug(x) cout<<#x"=["<<x<<"]" <<endl
#define FIN freopen("D://Code//in.txt","r",stdin)
#define IO ios::sync_with_stdio(false),cin.tie(0)const double eps = 1e-8;
const int mod = 998244353;
const int maxn = 5000 + 7;
const double pi = acos(-1);
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3fLL;int t;
double r, h, vx, vy, vz, x, y, z;bool check(double t) {double xx = x + vx * t;double yy = y + vy * t;double zz = z + vz * t;if(zz < 0) return false;if(zz > h) return false;double R = (h - zz) * r / h;return (sqrt(xx * xx + yy * yy) - R) <= eps;
}int main() {scanf("%d", &t);int icase = 0;while(t--) {scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &r, &h, &x, &y, &z, &vx, &vy, &vz);if(z < 0 && sqrt(x * x + y * y) <= r * r) {printf("Case %d: %.7f\n", ++icase, abs(z) / abs(vz));continue;}double a = vx * vx + vy * vy  - r * r * vz * vz / h / h;double b = 2 * (vx * x + vy * y - z * vz * r * r / h / h + h * vz * r * r / h / h);double c = x * x + y * y - r * r / h / h * (h - z) * (h - z);double ans1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);double ans2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);double ans = INF;if(check(ans1)) ans = min(ans, ans1);if(check(ans2)) ans = min(ans, ans2);printf("Case %d: %.7f\n", ++icase, ans);}return 0;
}

转载于:https://www.cnblogs.com/Dillonh/p/11196418.html

The Tower(HDU6559+2018年吉林站+数学)相关推荐

  1. 2021-11-12 (2018 CCPC 吉林站)

    A - The Fool 题意: 给一个数n,你需要求出n/1+n/2+...+n/n的和,判断和为奇或偶,输出. 思路: 打表可以发现前三个数为奇数,五个为偶数,七个为奇数,九个为偶数,即公差为2的 ...

  2. 2018 acm-icpc南京站 复盘

    2018 acm-icpc南京站 复盘 超长文预警 看上去像分锅的 来自回忆 可能略有偏差 队员:djq(初二,2417) dtx(高二,2337) wyy(高二,2194) 背景 由于是djq换下d ...

  3. 2018 年中国科学院大学生数学夏令营试题

    2018 年中国科学院大学生数学夏令营 分析与代数试卷 整理编辑: Xionger   2018年7月11日 满分为100分,考试时间为120分钟,答案必须写在答题纸上 1. (15分)设$\Omeg ...

  4. 2018年中国研究生数学建模竞赛C题 二等奖 赛题论文

    2018年中国研究生数学建模竞赛C题 对恐怖袭击事件记录数据的量化分析 恐怖袭击是指极端分子或组织人为制造的.针对但不仅限于平民及民用设施的.不符合国际道义的攻击行为,它不仅具有极大的杀伤性与破坏力, ...

  5. 2018年全国高中数学联赛浙江省预赛

    总目录:2019高中数学联赛备考手册(预赛试题集锦) 2018年全国高中数学联赛浙江省预赛 题目内容详见https://wenku.baidu.com/view/d02fbb3e591b6bd97f1 ...

  6. 2018山东春季高考计算机真题,2018年春季高考数学真题.doc

    2018年春季高考数学真题.doc (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 4.89 积分 2018春季高考真题一. 选择题1.已知集合M={ ...

  7. 防热服的设计数学建模_高温作业专用服装设计各位厂家提供点解题思路 2018年全国大学生数学建模A题...

    问匿名用户评论等级: 2018年全国大学生数学建模A题高温作业专用服装设计 这里统一对大家的问题做一个回答: 本题适用差分解法吗? 求解偏微分方程的方法中,差分方法和有限元是两类最主流的方法. 差分方 ...

  8. 华罗庚超级计算机,海南省三亚一中2018届”华罗庚杯“数学竞赛七年级决赛试题...

    ID:9351152 分类: 竞赛 , 海南 , 2018 资源大小:196KB 资料简介: 三亚一中2018届"华罗庚杯"数学竞赛七年级决赛 一.单选题(每题3分,共21分) 1 ...

  9. 2018年华为杯数学建模获奖名单挖掘分析

    2018年"华为杯"数学建模获奖名单挖掘分析 本文针对2018年"华为杯"数学建模6张拟获奖名单做一次简单的统计分析,以下分析结果仅代表思路,勿要以假乱真,权威 ...

最新文章

  1. 中国磁性材料行业竞争趋势及供需前景分析报告2021年版
  2. 【CyberSecurityLearning 17】三层交换技术及实验演示、内部网络规划、HSRP
  3. 如何利用MongoDB实现高性能,高可用的双活应用架构?
  4. 【学习的心得】——“快餐”的效率与“挖掘”的重要性
  5. Linux进程终止命令kill或killall​笔记
  6. [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]
  7. SAP MM/FI 自动过账实现 OBYC 接口执行
  8. js 箭头函数没有 constructor,不能被new
  9. Nginx 二级子域名完美方案
  10. linux 项目内存吃掉,Linux内存被吃掉了,它去哪里了?
  11. 实时获取麦克风语音信号
  12. 如何利用webpack4.0搭建一个vue项目
  13. Linux之重置密码的两种方法
  14. Agv、Rgv 车辆控制调度系统开发第七篇-选车算法
  15. winserver2008 安装elasticsearch
  16. open drain和push pull
  17. 单车---------Eason
  18. Java剑开天门(二)
  19. 如何对智能对话机器人的智能化水平分类
  20. 优秀产品经理的18种能力

热门文章

  1. python【数据结构与算法】深入浅出Linear(线性表)
  2. 工作单元php,PHP面向对象之工作单元
  3. Java 按位与 Java代码_(Java)按位与运算符-是否用于减少前一个位间隔?
  4. 风变编程python第一关脸黑怪我喽_风变编程:Python适合编程初学者学习吗?
  5. 计算机office软件改为中文,计算机预装正版Office如何更改为64位程序
  6. 条件限制select into_SQL全部知识点(夺回控制台掌控权,转义符,SELECT特定列,AND,OR,查询数值,比较运算)...
  7. Mysql while 嵌套 cursor 游标, 数据迁移
  8. c语言 feof_C语言 实现简单功能的12306火车售票系统【附源码】
  9. 什么样的域名利于网站SEO优化?
  10. 17秋福师《计算机应用基础》在线作业一,福师17春秋学期《计算机应用基础》在线作业一...