80pts #5WA注释已写求解!
查看原帖
80pts #5WA注释已写求解!
956316
77Glorious楼主2024/5/8 16:40
#include<bits/stdc++.h>
using namespace std;

double h,s1,v,l,k,g=10;//重力加速度 
int n,ans; 

int main()
{
	
	cin>>h>>s1>>v>>l>>k>>n;
	//高度,小车前离原点,速度,宽,高,小球数量
	double dis=s1-(n-1);//小车离第n个球的距离
	double dropt=sqrt(2*h/g);//落到地面上的时间 
	double ext=dis/v;//小车前端运动到地面上下落到车上时的极限时间 
	if(fabs(ext-dropt>0.0001))//如果n号球已经落地,但是小车还是接不到球 
	{		
		
		cout<<0;
		return 0;
	}
	double head=s1-dropt*v,tail=head+l;//小车最终的头、尾位置位置坐标 
	
	if(tail-(n-1)>0.0001)//如果车尾在最后一个小球后面 
	{
		if(fabs(head-floor(head))<=0.0001)
		{
			double down=floor(head);
			ans=(n-1)-down+1;
		}
		else if(fabs(head-ceil(head))<=0.0001)
		{
			double up=ceil(head);
			ans=(n-1)-up+1;
		}//接受车头附近的球		 
	}
	
	else//如果车在小球中间 
	{
		int ll=head,rr=tail;//预处理小球落在车上的区间,都处理为整数方便计算 
		if(fabs(head-floor(head))<=0.0001)	
			ll=floor(head);			
		else if(fabs(head-ceil(head))<=0.0001)		
			ll=ceil(head);//接受车头附近的这个球
			
		if(fabs(tail-floor(tail))<=0.0001)	
			rr=floor(tail);			
		else if(fabs(tail-ceil(tail))<=0.0001)		
			rr=ceil(tail);//接受车尾附近的这个球
		ans=tail-head;				
	}
	cout<<ans;	
	return 0;
}
2024/5/8 16:40
加载中...