当前位置: 代码迷 >> 综合 >> 洛谷 P1033 自由落体(数学推导,水题)
  详细解决方案

洛谷 P1033 自由落体(数学推导,水题)

热度:1   发布时间:2023-12-13 18:59:54.0

数学推导,水题
本题要点:
1、首先,这道题,小球看做是一个点,落到底面就消失。不需要考虑地面反弹。
2、车长L, 车左边到达球i所在的坐标时间是 t1, 右边到达 时间是 t2.
计算在时间 [t1, t2] 范围内,求 i 的下落高度 h1 和 h2, 是否和车高度范围内有交集。
车顶在坐标系中高度是 H1 = H - K, 车底 高度是 H2 = H;
3、两种情况不相交:
球落在 车的上面: 车过了,球才落地。
球落在车 的底下: 球在车到前落地。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
double eps = 0.0001;
double H, S1, V, L, K;
int n;void solve()
{
    int ans = 0;double t1, t2, h1, h2;double H1 = H - K, H2 = H;for(int i = 0; i < n; ++i){
    t1 = (S1 - i) / V, t2 = (S1 - i + L) / V;h1 = 0.5 * 10 * t1 * t1, h2 = 0.5 * 10 * t2 * t2;	if(H1 - h2  > eps || h1 - H2 > eps){
    continue;}++ans;}printf("%d\n", ans);
}int main()
{
    scanf("%lf%lf%lf%lf%lf%d", &H, &S1, &V, &L, &K, &n);solve();return 0;
}/* 5.0 9.0 5.0 2.5 1.8 5 *//* 1 */