題意是乙個球,在重力加速度為1的環境下,無能量損失,從起點彈到重點.中間有n張網,告訴你每張網和起點的距離和高度,限制碰撞的最大次數,求出最小的出射速度.
題面給了一大堆公式然而並沒有什麼卵用,直接根據輸入說明yy題意.
首先需要發現對於給定長度從一端到另一端需要的最小的速度是出射方向為45度的速度,高中物理就能推出來~然後只需要寫兩個函式,第乙個用來解決彈i次的最小速度,第二個用來解決經過(0,0), (x,y), (l, 0)的拋物線出射速度是多少.
第二個函式的公式也很好搞,設拋物線y=ax(x-l),帶入已知的(x,y)可以求出a,然後出射的角度就很好求了,求個導數tan(sita) = -al,然後根據時間相等,l/(2*v*cos (sita)) = v*sin (sita) / g,
求得v = sqrt (l/sin (2*sita)).
#include using namespace std;
#define maxn 22
#define inf 1e16
#define eps 1e-8
#define pi acos (-1)
struct node
}p[maxn];
double d;
int n, b;
double cal (double l, double x, double y)
double solve (int tot, double l)
double l = 0, r = l, ans = 0;
for (int i = 1; i <= tot; i++, l += l, r += l) }}
return ans;
}int main ()
printf ("%.5f\n", ans);
}return 0;
}
Slice Sampling 簡單推導
假設隨機變數x p x 我們想從該分布中取樣,得到關於這個分布的資訊 如均值 方差等 slice sampling切片取樣是一種常用方法。令u p x 顯然有0 u 1 slice sampling從概率密度函式p x 所圍成的面積裡均勻取樣,即是從p x,u 中採取均勻分布的樣本 x t u t ...
UVALive 6434 簡單排序 DP
題意 將給定的n個數分成m組 1 m n 100 要求minimize 每組最大與最小值之差的和。題解 思路有兩個,暴力的直接甩一臉dp,或者排序後找出兩兩間差距最大的那m 1個剔除,剩餘的差距之和就是所求的值。typedef long long ll using namespace std int...
IOC的簡單推導
public inte ce userdao public class userassetdaoimpl implements userdao public class userinfodaoimpl implements userdao public class userhealthdaoimpl...