推導公式 hdu2298 Toxophily

2021-07-04 01:35:46 字數 1048 閱讀 2517

剛開始想用二分去做,卻沒有證明單調性

如果非要用二分做,應該先用三分找到最頂端的點,然後再二分,這樣太麻煩了,

其實,可以乙個公式搞定

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...