Hdu Toxophily【三分+二分】或者【物理公式】

RM3100应用笔记驱动程序SPI接口 PNI磁传感器套件RM3100磁传感器套件由2个Sen-XY-f(pn13104)地磁传感器,1个Sen-Z-f(pn13101)地磁传感器和MagI2C(pn13156)控制芯片组成,能够实现三维空间的磁场大小测量。 阅读详情

 

 

题目:

Toxophily

 

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1603    Accepted Submission(s): 853

 

 

Problem Description

The recreation center of WHU ACM Team has indoor billiards, Ping Pang, chess and bridge, toxophily, deluxe ballrooms KTV rooms, fishing, climbing, and so on.
We all like toxophily.

Bob is hooked on toxophily recently. Assume that Bob is at point (0,0) and he wants to shoot the fruits on a nearby tree. He can adjust the angle to fix the trajectory. Unfortunately, he always fails at that. Can you help him?

Now given the object's coordinates, please calculate the angle between the arrow and x-axis at Bob's point. Assume that g=9.8N/m. 

 

 

Input

The input consists of several test cases. The first line of input consists of an integer T, indicating the number of test cases. Each test case is on a separated line, and it consists three floating point numbers: x, y, v. x and y indicate the coordinate of the fruit. v is the arrow's exit speed.
Technical Specification

1. T ≤ 100.
2. 0 ≤ x, y, v ≤ 10000. 

 

 

Output

For each test case, output the smallest answer rounded to six fractional digits on a separated line.
Output "-1", if there's no possible answer.

Please use radian as unit. 

 

 

Sample Input


 

3 0.222018 23.901887 121.909183 39.096669 110.210922 20.270030 138.355025 2028.716904 25.079551

 

 

Sample Output


 

1.561582 -1 -1

 

 

题目:

站在原点射箭,射箭的角度可以任意调整,且必须在0~90°之间,找出一条抛物线能经过指定的点并且射出角度最小的值。

思路 1 :

这题是一道物理题,涉及知识应该是高中比较简单的,但是,我高中的物理知识是真的忘得一干二净了,所以百度找了公式,自己瞎搞才弄出一条公式,特别费劲,公式怎么来的就不说了,我直接给出过程, 速度分解成竖直和水平两个方向,那么,水平速度为 vcos(a),竖直速度为 vsin(a),水平位移 x = vcos(a)*t , 竖直位移因为要考虑重力的影响和水平位移不同,为 y = vsin(a)*t-1/2(g*t^2); 两个式子可以削去时间t  则有公式  y = x*tan(a)-(1+tan(a)*tan(a))*(g*x*x)/(2*v*v)    (  这里有一步  省略了:1/cos^2(a)=1+tan^2(a)) 移项过后有一个一元二次方程 f(tan(a)) ,这个一元二次的 ax^2+bx+c,中的a,b,c分别移出来,可以作为判断是否存在符合题意的答案也可以通过求根公式求出答案,下面给出代码:

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<time.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<list>
#include<queue>
#include<map>
#define E exp(1)
#define PI acos(-1)
#define mod (ll)(1e9+9)
#define INF 0x3f3f3f3f;
#define MAX 40000
#define compare 0.00000001
#define exps 1e-8
//#define _CRT_SECURE_NO_WARNINGS
//#define LOCAL
using namespace std;

typedef long long ll;
typedef long double lb;

int main(void)
{
#ifdef LOCAL
	freopen("data.in.txt", "r", stdin);
	freopen("data.out.txt", "w", stdout);
#endif

	int t;
	double x, y, v, a, g = 9.8;
	
	while (scanf("%d", &t) != EOF) {
		for (int i = 0; i < t; ++i) {
			scanf("%lf%lf%lf", &x, &y, &v);
			double A =  (-1)*g * x*x / (2.0 * v*v),
				B = x,
				C = (-1)*g * x*x / (2.0 * v*v) - y,
				judge = B * B - 4 * A*C,
			
			//一元二次存在根的判断式 △	
			if (judge < 0) {
				printf("-1\n");
				continue;
			}
			
		// 这里要考虑到v如果等于0的时候,等于0的时候是不存在抛物线的 
			if (v < exps) {
				printf("-1\n");
				continue;
			}
		// 如果 x等于0,那么说明物体在正上方,
		//只要竖直射出的最高高度>=y就行了 
		//这个时候角度为90度 
			if (x < exps) {
				double min_h = (v*v) / 2 * g;
				if (y<=min_h) printf("%.6f\n", PI / 2);
				else printf("-1\n");
				continue;
			}
		//下面的就是求根公式了 
			double D = sqrt(judge);
			double t1 = (-B + D) /( 2.0 * A);
			double t2 = (-B - D) /( 2.0 * A);
	
			res_1 = 100, res_2 = 100, res;
			if (t1 >= 0 ) {
				res_1 = atan(t1);
			}
				if (t2 >= 0 ) {
					res_2 = atan(t2);
				}
				res = min(res_1, res_2);
				printf("%.6lf\n", res);
		}
	}
	//	end = clock();
	//	cout << "using tmie:" << (double)(end - start) / CLOCKS_PER_SEC * (1000) << "ms" << endl;

	//system("pause");
	return 0;
}

 

思路 2 :

 

三分+二分: 这里仍然要用到上面的公式  y = x*tan(a)-(1+tan(a)*tan(a))*(g*x*x)/(2*v*v)  ,这里的y要看成是一个因变量,x为一个常数,通过自变量 角度a 来改变y的值,那么这个公式的意思就是 一个开口向下的抛物线,且对称轴的横坐标为物体的x坐标的值,但y可能不是,可能大于物体的y坐标也可能小于物体的y坐标,我们这样要用三分的方法把 0<=a<=90度内,y值最大的那个角度找出来,当然,这个角度肯定是比较接近90度的,因为角度越高一般越高嘛,然后锁定 0<= a <= 最大角度,找出高度最接近物体y坐标的那个角度,求出来的就是答案了,找最接近的值得方法就是二分法,下面给出代码:

 

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<time.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<list>
#include<queue>
#include<map>
#define E exp(1)
#define PI acos(-1)
#define mod (ll)(1e9+9)
#define INF 0x3f3f3f3f;
#define MAX 40000
#define compare 0.00000001
#define exps 1e-8
// 宏定义的公式
#define formula(a) x*tan(a)-(1+tan(a)*tan(a))*(g*x*x)/(2*v*v)
//#define _CRT_SECURE_NO_WARNINGS
//#define LOCAL
using namespace std;

typedef long long ll;
typedef long double lb;

int main(void)
{
#ifdef LOCAL
	freopen("data.in.txt", "r", stdin);
	freopen("data.out.txt", "w", stdout);
#endif
	int t;
	double x, y, v, g = 9.8;
	while (scanf("%d", &t) != EOF) {
		for (int i = 0; i < t; ++i) {

			scanf("%lf%lf%lf", &x, &y, &v);

			double le = 0, ri = PI / 2.0, lmid, rmid;

			while (fabs(ri-le) > exps) {
				lmid = (ri + le) / 2;
				rmid = (ri + lmid) / 2;
				if (formula(lmid) > formula(rmid)) {
					ri = rmid;
				}
				else le = lmid;
			}
		
			if (formula(ri) < y) {
				printf("-1\n");
				continue;
			}

			double mid;
			le = 0;
			mid = (le + ri) / 2;
			while (fabs(formula(mid) - y) > exps) {
				mid = (ri + le) / 2;
				if (formula(mid) > y) ri = mid;
				else le = mid;
			}
			printf("%.6lf\n", mid);
		}
	}
	//	end = clock();
	//	cout << "using tmie:" << (double)(end - start) / CLOCKS_PER_SEC * (1000) << "ms" << endl;

	//system("pause");
	return 0;
}

 

 

 

 

 

 

 

有之以为利,无之以为用,在 RAP 开发里的虚实取舍 摘要(149字) SAP RAP框架通过"有"与"无"的哲学平衡实现业务应用价值。其"有"体现在CDS视图、行为定义、服务绑定等具体对象,为系统提供形体;而"无"则表现为保留的扩展空间、未暴露的实现细节和框架托管的生命周期。在采购审批应用中,RAP既通过明确定义的行为模型建立业务语义,又通过验证、动作等机制保持灵活性。这种架构既确保核心功能稳固,又为未来演进留出余地,印证了"有之以为利,无之以为用"的技术智慧 阅读详情

相关推荐

Ferromagnetic soft continuum robots

本文来自机器人领域顶刊,Science Robotics。介绍了一种铁磁软连续体机器人,主要贡献为1)介绍了一个基于磁性微粒和聚合物的软连续体机器人的制造方法,在机器人外表面涂了一层水凝胶,极大地降低了摩擦阻力;2)并研究了在磁场下,不同粒子体积分数下,此机器人的驱动性能;利用手动操控的磁铁,进行了许多实验证明该机器人性能的优异性。 铁磁软连续体机器人 Ferromagnetic soft continuum robots [1] Paper Link Authors: Kim, Yoonho, et al

XU Yangxin的博客 1372

HDU 2298 Toxophily(水~)

Description 从(0,0)点射箭,速度为v,重力加速度g=9.8,想射到(x,y)处的一个苹果,求最小出射角度 Input 第一行为一整数T表示用例组数,每组用例为三个浮点数x,y,v表示苹果位置和箭的出射速度(T<=100,1<=x,y,v<=10000) Output 对于每组用例,如果可以射到苹果则输出最小出射角度,否则输出-1 Sample Input 3 0.22

ZSQ 719

攻克Windows平台3DGS复现:从环境配置到可视化实战全记录

本文详细记录了在Windows平台成功复现3D Gaussian Splatting(3DGS)的完整流程,涵盖从环境配置、依赖安装、数据准备到模型训练与可视化的全步骤。重点解决了Windows下CUDA版本匹配、Visual Studio编译及SIBR_viewers可视化工具部署等核心难题,为开发者提供了一份详实的避坑指南与实战手册。

weixin_28839699的博客 252

推导公式 hdu2298 Toxophily

刚开始想用二分去做,却没有证明单调性 如果非要用二分做,应该先用三分找到最顶端的点,然后再二分,这样太麻烦了, 其实,可以一个公式搞定 y=x*tanα-gx*x/(2*v*v*(cosα)*(cosα)) 相信这一步大家都能推出来,然后问题来了 1/(cosα*cosα),1等于sinα^2 + cosα^2 那么1/(cosα*cosα)就到等于(sinα^2 + cosα^2)/

qwb的博客 1599

高速数字信号硬件设计:灵巧手方向核心技能与实战解析

在机器人产业加速演进的今天,灵巧手等高自由度末端执行器对硬件电路设计提出了更高要求。传统硬件工程师熟悉功能、功耗与EMC,而灵巧手设计还需在极小空间内融合多路电机驱动、高速数字接口与微弱模拟信号采集。信号完整性与电源完整性成为决定系统稳定性的关键:信号上升沿决定有效带宽,阻抗匹配、回流路径和去耦策略直接影响通信质量与抗干扰能力。从阻抗计算、等长设计到FPC布线,再到电源预算与纹波抑制,这些高速数字信号设计基础原理不仅适用于服务器主板,更是灵巧手控制器开发与调试的必修课。本文面向从事机器人硬件、嵌入式系统与电

weixin_29172963的博客 237

多期DID实战指南:从CSDID原理到分组加权策略

本文深入解析多期DID(CSDID方法)在政策评估中的实战应用,从核心思想到分组加权策略全面讲解。通过电商扶贫等案例,详细演示如何正确处理分批实施政策的数据分析,包括分组拆解、子模块DID操作及加权平均选择,帮助研究者规避常见误区,提升政策评估的准确性。

weixin_26833503的博客 524

HDU-2298 Toxophily (三分法入门系列)

题意: 意大利炮射出炮弹的速度为v,求在(0,0)击中(x,y)处的目标,发射炮弹的角度。 题解: 设f(α)表示:角度为α,炮弹的横坐标与目标相同时,炮弹的高度。 f(α) = vsin(α) * t - 4.9 * t * t ① t = x / ( v * cos(α) ) ② 然后,一顿乱搞得f(α) = x*tan(α) - (4.9...

weixin_34293141的博客 168

使用YOLOv5进行工业检测(如裂纹、划痕、破损等)

本文将详细介绍如何使用YOLOv5实现工业检测项目,以检测生产线上的缺陷产品,如裂纹、划痕、破损等。我们将分步介绍数据准备、模型训练、模型优化和部署等过程。

a871923942的博客 2528

HDU 2298 Toxophily (三分+二分)

Toxophily The recreation center of WHU ACM Team has indoor billiards, Ping Pang, chess and bridge, toxophily, deluxe ballrooms KTV rooms, fishing, climbing, and so on. We all like toxophily. Bob is ...

zhe 301

基于STM32设计的老人摔倒检测报警系统(OneNet+MQTT)(235)

基于STM32设计的老人摔倒检测报警系统,不仅能够实时监测老人的位置信息,方便在紧急情况下快速定位,还能通过陀螺仪模块精确检测老人的身体姿态,一旦判断为摔倒状态,系统将立即触发蜂鸣器报警,并通过4G网络向指定联系人发送短信警示,确保老人能够迅速得到援助。此外,系统还支持老人主动按下设备上的按键发送求助短信,增强了系统的灵活性和实用性。

4691

MacBook M芯片第二篇:Homebrew安装

Homebrew是MacOS/Linux平台的软件包管理工具,提供便捷的安装、卸载、更新等功能。

码农魏轩 893

day5 HDU 2298 Toxophily

推数学公式。。没什么大意义。。应该用三分?  没想出单峰的证明 #include"iostream" #include"iomanip" #include"cmath" using namespace std; const double PI=3.1415926535898; const double g=9.8; int t; double x,y,v; int main() {

ak8877的博客 301

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hdu 2298 Toxophily 【三分+二分+公式】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2298 题意:在(0,0)处有弓箭,可以调整角度,给定目标的坐标(x,y)和弓箭的发射速度,问调整到什么角度(弧度制)时能击中目标; 题解:首先要根据高中的知识得到公式  t=x/(v*cos(angle))     Y=v*sin(angle)*t-G*t*t/2(angle时角度)  然后根据三...

几许情愁的博客 264

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HDU 2298 Toxophily 【三分算法 or 直接推导物理公式】

http://acm.hdu.edu.cn/showproblem.php?pid=2298 题目大意:Bob在(0,0)点想射在(x,y)点的水果,初始的速度为v(已知),g=9.8,求最小的角度射到苹果. 解题思路: ---直接推到物理公式: 将速度的分解为x方向和y方向,然后列出式子 1>x=vcosθ*t----变形--->t=x/vco...

dianxuanzhi1019的博客 210

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Toxophily-数论以及二分三分

G - Toxophily Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2298 Description The recreation center of WHU ACM Team has indoor

qq_18661257的专栏 1469

HDU -2298 Toxophily(三分法)

这道题目,可以推出物理公式直接来做,但是如果推不出来就必须用程序的一种算法来实现了,物理公式只是适合这一个或者某个题,但是这种下面这种解决问题的方法确实解决了一类问题 ----三分法,大家可能都听说过二分法,没有听说三分法,确实三分法很冷,但是学会了就是学会了,而且他的计算速度并不慢,时间复杂度是log型的,所以推荐学会这种方法,下面是具体的代码实现,包括怎么三分的过程,可以平均分成三段...

dizhuo0219的博客 214

hdu 2298 Toxophily 公式 或者 三分+二分。

射箭 为射到靶子的最小出手角度。 出手速度  、靶子的位置 给出。 公式推导。 三角函数 推导 求解。 最终公式   sin(2*p -q ) = (g*a*a + b)/(v*v * sqrt(a*a + b*b)) a , b 为靶子的坐标 v是出手速度。 p 要求的角度 cos q = a/ sqrt(a*a + b*b); #include

OceanLight的专栏 796

HDU 2298 Toxophily(公式/三分+二分)

已知发射点坐标为(0,0)和重力加速度g=9.8,给出目标的坐标和初速度,求能够击中目标的最小仰角。有两种思路,第一种是直接假设能够击中目标,写出公式,化成一元二次方程,把公式内的三角函数全部化成tan,判断[0,PI/2]有无解;第二种方法就是三分+二分,首先三分仰角,求出轨迹在x处的纵坐标,若纵坐标最大值小于y,则直接输出-1,三分过后[0,r]上就是单调递增的,直接二分即可。

Noooooorth的专栏 1983

hdu2298 Toxophily 三分+二分

首先这题是一道物理题,需要我们根据题意抽象一个函数出来。对物体的运动作分解后,可以得到: f(t)=x*tan(t)-g*x*x/(v*cos(t))^2/2,其中t表示v与x轴正向的夹角(弧度),f(t)表示物体的运动轨迹与直线x0=x的交点纵坐标。 分析后可以得到该函数在区间(0,π/2)上先增后减,所以我们可以在该区间上三分,求出使函数取得极大值的角度t0。若f(t0) #includ

程序猿之路 1414

HDU 2298-Toxophily (三分+二分)

Toxophily Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2443    Accepted Submission(s): 1351Problem DescriptionThe recreation center of WHU AC

信仰.的博客 440

HDU 2298 Toxophily(三分+二分)

传送门 Toxophily Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2304    Accepted Submission(s): 1270Problem Description The recreation center of W

代码改变世界 970

HDU_2298_Toxophily

Toxophily Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1480    Accepted Submission(s): 772 Problem Description The recreation cen

OTTFF的博客 437

hdu2298.Toxophily

这是一道二分的题目

中华鲁迅的专栏 829

Toxophily(HDU-2298)

Problem Description The recreation center of WHU ACM Team has indoor billiards, Ping Pang, chess and bridge, toxophily, deluxe ballrooms KTV rooms, fishing, climbing, and so on. We all like...

Alex_McAvoy的博客 477

Toxophily(hdu2298三分+二分)

题意:从(0,0)开始,射中目标(x,y),g=9.8N,问射中的最小角度. 思路:因为角度[0,PI/2], cos(a),[0,PI/2]是单调函数,可以二分逼近出一个结果,判断他能否射中,找到能射中的最大高度,然后和y比较,小于y就是射不中,否则就二分逼近结果 x,y表示水平方向,竖直方向的位移.t表示时间. x = v * cos(a) * t; y = v * sin(a) * ...

weixin_33674976的博客 81
上一篇: HDU 3400 Line belt 【三分嵌套】
下一篇: hdu 1253 胜利大逃亡【BFS】
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值