比赛 |
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;
}