hdu2298-(二分或裸方程)

原创 2012年03月29日 21:05:49

题目链接

今天做上个三分的题时无意间看见某高手的一句话,为了做某个类型题,先去水水这类型的题。

在这里表表决心,每水完一个题,再找一个这个类型的题。还有趁着这几天的假期,把以前做过的类型水水,加强熟练程度。

题意:

bob射向一个水果,给出水果的坐标,以及初始的速度。求最小的角度(与x轴)。

分析:

由题意,不难找出两个关系式,a属于0-PI/2;

垂直方向上,v*sin(a)-g*t*t/2=y;

水平方向上,v*cos(a)*t=x;

整理两个方程式,y=v*sin(a)*x/(v*cos(a))-g*(x*x/(2*v*v*cos(a)*cos(a)))

又,1/cos(a)^2=1+tan(a)^2;

g*x*x*tan(a)-2*v*v*x*tan(a)+2*v*v*y+g*x*x=0;先减小后增大的函数

到此,可以二分解决求a的最小值。先二分得到a的极值,然后,逐渐逼近x(a越大,y越大;a越小,y越大)。

还可以直接解方程把tan(a)当成未知量x,由此转化成了一元二次方程求根。

此处贴出主要代码:

 求根法                 first=0;
			end=PI/2;
			a=g*x*x;
			b=-2*v*v*x;
			c=2*v*v*y+g*x*x;
			d=b*b-4*a*c;
			t1=(-b+sqrt(d))/(2*a);
			t2=(-b-sqrt(d))/(2*a);
			d1=atan(t1);
			d2=atan(t2);
			if((d1>=MIN && d1<=end) && (d2>=first && d2<=end))
				printf("%.6lf\n",d1<d2?d1:d2);
			else if(d1>=first && d1<=end)
				printf("%.6lf\n",d1);
			else if(d2>=first && d2<=end)
				printf("%.6lf\n",d2);
			else
				printf("-1\n");

从零开始写一个arm下的裸板程序

从零开始写一个arm下的裸板程序.我们整个程序是基于uboot运行的. 所有我们可以借助uboot中的printf来输出,默认开发版的标准输出是串口. 电脑的默认标准输出的屏幕. 1.需要创建的文...
  • shaohuazuo
  • shaohuazuo
  • 2014年12月25日 17:33
  • 1927

裸奔系统和带操作系统的系统差别

1、  裸奔系统和带操作系统的系统差别。 a)        裸奔的系统很自由,一切东西都由开发人员来安排,所以开发人员认为这个任务比较紧急,就可以作为重点来考虑,在循环中占主要位置来写。在实时性方...
  • u012914709
  • u012914709
  • 2014年05月11日 11:03
  • 1592

Exynos4412裸机开发系列教程--启动流程

看过前两篇教程的朋友,发现
  • obobodog
  • obobodog
  • 2014年08月15日 11:13
  • 3090

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

已知发射点坐标为(0,0)和重力加速度g=9.8,给出目标的坐标和初速度,求能够击中目标的最小仰角。有两种思路,第一种是直接假设能够击中目标,写出公式,化成一元二次方程,把公式内的三角函数全部化成ta...
  • Noooooorth
  • Noooooorth
  • 2015年07月24日 08:51
  • 1612

HDU 2298-Run(二分)

Description The recreation center of WHU ACM Team has indoor billiards, Ping Pang, chess and brid...
  • u013534690
  • u013534690
  • 2014年08月10日 13:58
  • 470

HDU/HDOJ 2298 Toxophily 二分法+三分法 第4届百度杯总决赛

Toxophily Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Tot...
  • xieshimao
  • xieshimao
  • 2011年08月05日 10:15
  • 1455

HDU 2298 Toxophily

ToxophilyTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
  • LuRiCheng
  • LuRiCheng
  • 2016年08月20日 15:17
  • 160

HDU2298

Toxophily Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot...
  • algzjh
  • algzjh
  • 2016年08月21日 17:15
  • 136

hdu 2298 Toxophily (物理题)

Toxophily Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot...
  • qq_24451605
  • qq_24451605
  • 2015年04月01日 08:26
  • 319

暑期集训训练3练习题B - Toxophily(HDU2298)

这道题主要是需要推两个公式: 水平方向上:v*cos(a)*t=x; 竖直方向上:v*sin(a)*t-g*t*t/2.0=y; 得到:y=x*tan(a)-g*x*x/(v*v*cos(a)cos(...
  • Guang_Novak
  • Guang_Novak
  • 2016年07月31日 08:46
  • 155
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu2298-(二分或裸方程)
举报原因:
原因补充:

(最多只允许输入30个字)