比赛 20111109 评测结果 AAAAAAAAAA
题目名称 摩托车游戏 最终得分 100
用户昵称 Makazeu 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-09 10:43:05
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cstdlib>
using namespace std;
int S,t;
double T;
double F[1001];//F[i]:前i*10公里的最小時間

double Speed(int oil)
{
	double ans;
	oil*=10;
	if(oil<=10)
		ans=100;
	if(oil>10 && oil<=20)
		ans=90;
	if(oil>20 && oil<=30)
		ans=80;
	if(oil>30 && oil<=40)
		ans=75;
	if(oil>40)
		ans=70;
	return ans;
}

void init()
{
	scanf("%d %d\n",&S,&t);
	S/=10;
	T=((double)(t))/(double(60));
	return;
}

void dp()
{
	for (int i=1;i<=S;i++)
	{
		double Min=10000000.0;
		double time;
		
		time=(i*10)/Speed(i);
		if(Min>time)
			Min=time;
		
		for (int j=1;j<=i-1;j++)
		{
			double speed=Speed(i-j);
			time=((i-j)*10)/speed;
			if(Min>(F[j]+time+T))
				Min=F[j]+time+T;
		}
		F[i]=Min;
	}
	printf("%.2lf",F[S]);
}

int main()
{
	freopen("carz.in","r",stdin);
	freopen("carz.out","w",stdout);
	init();
	dp();
	return 0;
}