剛開始想用二分去做,卻沒有證明單調性
如果非要用二分做,應該先用三分找到最頂端的點,然後再二分,這樣太麻煩了,
其實,可以乙個公式搞定
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)/( cosα^2)
也就是1+tanα^2
所以式子可以化成關於tanα的方程
解出來,然後直接用atan函式得到角度完美解決
#include#include#include#includeusing namespace std;
typedef long long ll;
const int mx = 20 + 5;
const int inf = 0x3f3f3f3f;
const double pi = acos(-1.0);
const double exps = 1e-8;
int main()
a = -g * x * x / (2.0 * v * v);
b = x;
c = -y + a;
d = b * b - 4 * a * c;
if(d < 0)
if(fabs(x) < exps)
d = sqrt(d);
p1 = (-b - d) / (2.0 * a);
p2 = (-b + d) / (2.0 * a);
p1 = atan(p1);
p2 = atan(p2);
double ans = 100;
if(0 <= p1 && p1 <= pi / 2 && p1 < ans)
if(0 <= p2 && p2 <= pi / 2 && p2 < ans)
if(ans > 99) else
}return 0;
}
hdu 2298 推公式 解方程
hdu 2298 題目大意就是 你站在 0,0 點射箭要射到 x,y 點 告訴你箭的速度v 問通過調整角度能不能射到 x,y 點 如果可以問最小角度是多少 如果不行輸出 1 這就是一道高中物理題 當箭剛好到 x,y 點那麼所需的角度最小 設與x方向的夾角為 則y方向有y vy t g t 2 1 2...
Fibonacci Numbers公式推導(數論)
題目 fibonacci numbers 簡介 如果斐波那契數小於8位的就輸出這個數,大於8位的就輸出前四位,以及後四位 公式部分 fibonacci求和公式 f n 15 1 52 n 1 52 n a0 0,a 1 1 beginf left n right dfrac left left df...
hdu 4565 公式推導 矩陣快速冪
參考 這公式真心難想到 向上取整等價於加上後面乙個式子,學習了orz。寫完快速冪,我還一直wa,最後才發現中途計算的時候沒有 a mod mod,因為會變成負數,坑啊。include include include include using namespace std define mn 2 de...