HDU 1494 跑跑卡丁車

2022-08-26 06:57:11 字數 857 閱讀 9650

題目鏈結

狀態方程推不出,這題,個人認為比較難,的經常看看

將氮氣看成14個狀態,14為2個卡與80% 

dp[i][j]表示為跑完第i段還剩j的最短時間,

if(k==0)               剩0是為衝過來的。

dp[j][k]=dp[j-1][k+5]+b[j];

else if(k==10)      剩10有兩種情況,從9過來 從14過來

dp[j][k]=min(dp[j-1][14]+a[j],dp[j-1][9]+a[j]);

else if(k>10&&k<=14)   這時只能普通跑過來

dp[j][k]=dp[j-1][k-1]+a[j];

else                                   兩種選擇

dp[j][k]=min(dp[j-1][k-1]+a[j],dp[j-1][k+5]+b[j]);

**#include

#include

#include

#include

#define inf 0x3f3f3f3f

using namespace std;

int a[110];

int b[110];

int dp[110][20];

int main(void)

}for(j=0;j<15;j++)

dp[0][j]=dp[l][j];

}int ans=inf;

for(i=0;i<15;i++)

ans=min(ans,dp[l][i]);

printf("%d\n",ans);

}return 0;

}

HDU 1494 跑跑卡丁車

題目大意 有乙個n圈的跑道,跑道裡有l段路,每次跑過一段路加速器增加20 的能量,當有我們有乙個加速卡時,可以使用加速,我們最多可以積攢兩個加速卡,問跑完n圈的最小時間是多少。題目分析 首先我們可以把它按照dp求解 dp i j 表示走完前l段路,積累了j個20 能量所消耗的最小時間。其中只要注意一...

Hdu 1494 跑跑卡丁車

題目鏈結 中文題,題意一目了然 l段路,n圈 那麼可以視為l n段路 跑一圈所用最快時間。每個加速卡由100能量得到,每跑一段路得到20的能量,最多獲得2張加速卡以及80能量。可以簡化成 1表示20能量,則5表示一張加速卡,10表示兩張,14表示2張加速卡以及80能量,當為15時則成了兩張加速卡以及...

HDU 1494 跑跑卡丁車

很無愛的一道題。題解都看得一知半解的。acm之家的題解,留著以後慢慢體會 把這題轉化為揹包模型,每個 20能量算乙個單位,最多有15個,如果大於5個有乙個加速卡,如果大於10個有2個加速卡,如果等於16則邊為10,2個滿時清0.15就是揹包的最多容量,正常跑算乙個物品,權值 這裡不說重量有負值 為1...