记录编号 |
327724 |
评测结果 |
AAAAAAAAAA |
题目名称 |
护卫队 |
最终得分 |
100 |
用户昵称 |
GROWL GOOD BOYส็ |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.008 s |
提交时间 |
2016-10-22 19:36:50 |
内存使用 |
0.34 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
LL W,L;
LL A[1010],B[1010];
int N;
double dp[1010];
double MAX(double a,double b)
{if(a<b)return b;else return a;}
int main()
{
freopen("convoy.in","r",stdin);
freopen("convoy.out","w",stdout);
scanf("%lld%lld%d",&W,&L,&N);
for(int i=1;i<=N;i++)
{scanf("%lld%lld",&A[i],&B[i]);}
dp[0]=0.0;
for(int i=1;i<=N;i++)
{
double ha=0;
dp[i]=99999999999999.0;
LL qian=0;
int k=i;
while(qian+A[k]<=W&&k>0)
{
qian+=A[k];
ha=MAX(ha,(double)L/B[k]);
if(dp[i]>dp[k-1]+ha)
dp[i]=dp[k-1]+ha;
k--;
}
}
printf("%.1lf",dp[N]*60);
fclose(stdin);
fclose(stdout);
return 0;
}