HDU 4001 Working in Beijing

HDU_4001

    这个是一个相对容易的动态规划题,由于每次activity的时候M一定是在上海的,因而要达到这个状态,要么从前一次activity结束一直到现在M一直在上海,要么在上一次activity结束之后M飞回了北京,并在这次activity开始前一天飞到了上海(这种情况的前提是两次activity之间的间隔时间大于或等于2天),在两种情况中取一个花费最小的情况即可。

#include<stdio.h>
#include
<string.h>
int n,a,b,d[100010];
double cost[1000010];
int main()
{
int i,j,k,t;
double temp;
scanf(
"%d",&t);
for(k=0;k<t;k++)
{
scanf(
"%d%d%d",&n,&a,&b);
for(i=0;i<n;i++)
scanf(
"%d",&d[i]);
cost[
0]=a+b;
for(i=1;i<n;i++)
{
cost[i]
=cost[i-1]+(d[i]-d[i-1])*b;
if(d[i]-d[i-1]>2)
{
temp
=cost[i-1]+2*a+b;
if(temp<cost[i])
cost[i]
=temp;
}
}
printf(
"Case #%d: %.0f\n",k+1,cost[n-1]+a);
}
return 0;
}

  

原文地址:https://www.cnblogs.com/staginner/p/2170356.html