題目
題意:二維面上給定目標座標和初速度,求在座標原點(0,0),發射出去能經過目標點的最小的角度。
思路:寫出乙個高度關於角度的一元二次方程。看這個最大高度是否》=y,判斷是否有解。這是乙個二次型凸函式。假如對稱軸為x,而且最大高度》=y(即有解),[0,x]這一段滿足二分單調性,找出函式值最接近y的角度即可,再使用atan函式,求出角度。
#include
#include
#include
#include
#include
#define en '\n'
#define g 9.8
#define eps 1e-10
//(要足夠小)
using
namespace std;
typedef
double du;
const
int inf=
0x3f3f3f3f
;du x,y,v;
du work
(du o)
intmain()
if(ans
//找到可達到的最大高度。
printf
("-1\n");
else
printf
("%.6f\n"
,atan
(l));}
}}
二分和三分題
目錄三分 連續區間最大和 回到頂部 二分答案區間,每次check,檢查兩個標記的距離,如果小於x,那麼去掉。判斷去掉的個數。farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n...
二分 三分模板
適用於 單調函式 單調增或單調減 基本思想 給定9個數,由小到大排列,從這9個數中找出某乙個確切的數 比如4 偽 int binary sreach int a,int left,int right,int x if a left x return left return 1 給你三個陣列a,b,c...
二分和三分
三分二分,乙個簡單而神奇的演算法,可以簡化時間複雜度,但是用二分有乙個條件,就是我們進行二分的序列必須有單調性。原理 aa中找乙個數x xx 保證x xx一定存在 我們可以用樸素演算法,直接從頭到尾找一遍,時間複雜度o n o n o n 如果當序列a aa的長度十分大時,這種方法就不好用了。二分橫...