HDOJ 1494 跑跑卡丁車

2021-07-16 07:29:43 字數 788 閱讀 8380

每次做題就是太浮躁,注意不到各種細節!hdoj1494

題意是中文的,所以讀得太快,沒有注意這麼一句話:

加速卡的獲得機制是:普通行駛的情況下,每通過1段賽道,可以獲得20%的能量(n2o).

注意是普通行駛的情況下!所以,如果理解成普通行駛和加速行駛都會獲得能量呢,就會導致乙個地方的狀態轉移不對

20%可以理解成5次普通行駛之後會有1個加速器,轉換成整數來計算

那麼當普通行駛次數==14的時候

當理解對了題意的時候,是應該選擇的,要麼加速,要麼普通行駛

但是,當我理解錯了題意,任何行駛狀態都是會獲得能量了,那麼一定得加速(不然就浪費乙個加速器了對吧)

就是這個細節wa了一天

dp轉移很簡單吧,當沒有加速器的時候,只能普通行駛

當有加速器的時候,加速行駛或者普通行駛

因為這個題,加速器是有上限的時候,需要特判

**如下:

#include#include#include#include#includeusing namespace std;

const int maxn=50000;

const int inf=99999999;

int l,n;

int a[maxn],b[maxn];

int dp[maxn][20];

int main(){

//freopen("input.txt","r",stdin);

while(scanf("%d%d",&l,&n)!=eof){

n=n*l;

for(int i=0;i

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...