80pts萌新求捞,详细注释
查看原帖
80pts萌新求捞,详细注释
1120417
douhuazhenren1楼主2024/4/6 18:28
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
//t4自由落体
double h;//小球高度
double s1;//车能前进的距离
double v;//车前进的速度
double l;//小车的宽
double k;//小车的高度
double n;//小球的个数
double t1;//小球落到小车顶高度的时间
double t2;//小球落到地面上的时间
double t3[100010];//小车前端到各个小球正下方的时间
double t4[100010];//小球后端到各个小球正下方的时间
int sum;//能接住几个小球
int main() 
{
//	freopen("free.in","r",stdin);
//	freopen("free.out","w",stdout);

	cin>>h>>s1>>v>>l>>k>>n;

	t1=sqrt(0.2*(h-k));
	t2=sqrt(0.2*h);

	for(int i=1;i<n;i++)
	{//算出小车前端和后端到各个小球正下方的时间
		t3[i]=(s1-i)/v;//前端
		t4[i]=(s1+l-i)/v;//后端
		//序号即为小球到原点的水平距离
	}
	for(int i=1;i<n;i++)
	{//枚举每一个小球
		if((t1>=t3[i] || abs(t1-t3[i])<=0.00001) && (t1<=t4[i] || abs(t1-t4[i])<=0.00001))
			sum++;
		else //可以再侧面,也可以在上面
			if( (t2>=t3[i] || abs(t2-t3[i])<=0.00001 ) && (t2<=t4[i] || abs(t2-t4[i])<=0.00001))
				sum++;
	}
	//能爆切吗哥,给次机会qwq
	cout<<sum<<endl;
	return 0;
}

考场写的,虽然在机房测貌似只有三四十分

2024/4/6 18:28
加载中...