洛谷 P1033 [NOIP2002 提高组] 自由落体

题目描述

在高为 �H 的天花板上有 �n 个小球,体积不计,位置分别为 0,1,2,⋯ ,�−10,1,2,⋯,n−1。在地面上有一个小车(长为 �L,高为 �K,距原点距离为 �1S1​)。已知小球下落距离计算公式为 �=0.5×�×(�2)d=0.5×g×(t2),其中 �=10g=10,�t 为下落时间。地面上的小车以速度 �V 前进。

如下图:

小车与所有小球同时开始运动,当小球距小车的距离 ≤0.0001≤0.0001 (感谢 Silver_N 修正) 时,即认为小球被小车接受(小球落到地面后不能被接受)。

请你计算出小车能接受到多少个小球。

输入格式

�,�1,�,�,�,�H,S1​,V,L,K,n(1≤�,�1,�,�,�,�≤1000001≤H,S1​,V,L,K,n≤100000)

输出格式

小车能接受到的小球个数。

输入输出样例

输入 #1复制

5.0 9.0 5.0 2.5 1.8 5

输出 #1复制

1

说明/提示

当球落入车的尾部时,算作落入车内。

【题目来源】

NOIP 2002 提高组第三题

位移(X)公式:�=�₀�+0.5��²X=V₀t+0.5at²,其中V₀是初速度,t为时间,a为加速度。

而自由落体(就是小球下落)的初速度为0,加速度等于重力加速度g

由此得知,自由落体运动位移(Y)公式:�=0.5��²Y=0.5gt²

基本的公式知道了我们就可以解决题目了了。

我们先读入double型变量H,S,V,L,K,n。

我们知道车高为k,故小球下落的最短运动距离为����((ℎ−�)/5sqrt((h−k)/5,那么此时接住小球编号为�−�∗(����((ℎ−�)/5)+�)s−v∗(sqrt((h−k)/5)+l);

最长运动距离为����(ℎ/5)sqrt(h/5),接住的小球编号为�−�∗����(ℎ/5)s−v∗sqrt(h/5)。

由于接住的小球编号不会超过�−1n−1也不会小于0(PS:编号是0—n-1!!!),所以最大的接住数量为�−1−0+1n−1−0+1即n个.

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	double h,s1,v,l,k,n;
	scanf("%lf%lf%lf%lf%lf%lf",&h,&s1,&v,&l,&k,&n);
	double Maxtime=sqrt(h/5);
	double Mintime=sqrt((h-k)/5);
	int s=int(s1-Mintime*v+l);
	int e=int(s1-Maxtime*v);
	s=fmin(s,n);
	e=fmax(e,0);
	printf("%d",s-e);
	return 0;
}

拜拜! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值