比赛 20151026 评测结果 AAAAAAAAAA
题目名称 摩托车游戏 最终得分 100
用户昵称 white 运行时间 0.005 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2017-10-16 20:04:15
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std;
int s,i,j;
double t,_min;
int speed[1001]={0,100,90,80,75};//因为所行路程经观察可知都为10的倍数,speed代表加i*10升油时的速度;
double tim[1001]={0};//代表行驶i*10时的最小时间;
int main(){
	freopen("carz.in","r",stdin);
	freopen("carz.out","w",stdout);
	cin>>s>>t;
	s=s/10;
	t=t/60;
	for(i=5;i<=s;i++)
		speed[i]=70;//在加油大于40时速度始终为70;
	for(i=1;i<=s;i++)
	{
		tim[i]=100000;
		for(j=i-1;j>=0;j--)//背包tim[i]等于前面每一段的最小值+此次加油所耗时间(行驶时间+t)
		{
			_min=tim[j]+double((i-j)*10)/double(speed[i-j])+t;
			if(_min<tim[i])
				tim[i]=_min;//不断更新每一段最小值
		}
	}
	printf("%.2lf\n",tim[s]-t);//除去起点加油时间
	return 0;
}