现在的位置: 首页 > 综合 > 正文

11年成都网赛 (HDU 4036)

2019年02月10日 ⁄ 综合 ⁄ 共 920字 ⁄ 字号 评论关闭

用动能定理 ,与在peek(山顶)时的动能和bitter(坏土豆)的所在位置的动能比较,找出最大值,求出速度即可。 因为忽略了摩擦力

#include<stdio.h>
#include<string.h>
#include<math.h>
#define g 20
struct  spot{
	double x,y;
}p[1005];
int main()
{
	int t,cas=1;
	scanf("%d",&t);
	while(t--)
	{
		int numpeek,numbitter,sweetw,i;
		scanf("%d%d%d",&numpeek,&numbitter,&sweetw);
		double maxv=0;
		for( i=0;i<numpeek;i++)
		{
			scanf("%lf%lf",&p[i].x,&p[i].y);
			if(p[i].y>p[0].y)
			{
				double tempv=sqrt(2*g*(p[i].y-p[0].y));
				if(tempv>maxv)
					maxv=tempv;
			}
		}
		int j;
		double d,v,m;
		double tempx,h,temp;
		for(i=0;i<numbitter;i++)
		{
			scanf("%lf%lf%lf",&d,&v,&m);
			d+=p[0].x;
			for(j=0;j<numpeek-1;j++)
			{
				if(d>=p[j].x&&d<=p[j+1].x)
				{
					if(p[j].y<=p[j+1].y)
					{
						 tempx=d-p[j].x;
						 h=tempx*(p[j+1].y-p[j].y)/(p[j+1].x-p[j].x)+(p[j].y);
						 temp=sqrt((v*v+2*g*h-2*g*p[0].y));
						if(temp>maxv)
							maxv=temp;
					}
					else
					{
						 tempx=p[j+1].x-d;
						 h=tempx*(p[j].y-p[j+1].y)/(p[j+1].x-p[j].x)+(p[j+1].y);
						temp=sqrt((v*v+2*g*h-2*g*p[0].y));
						if(temp>maxv)
							maxv=temp;
					}
				}
			}
		}
		printf("Case %d: ",cas++);
		printf("%.2lf\n",maxv);
	}
	return 0;
}

抱歉!评论已关闭.