免費餡餅(線性dp)

2021-09-22 16:25:23 字數 1168 閱讀 5684

都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接。由於gameboy平時老呆在房間裡玩遊戲,雖然在遊戲中是個身手敏捷的高手,但在現實中運動神經特別遲鈍,每秒種只有在移動不超過一公尺的範圍內接住墜落的餡餅。現在給這條小徑如圖示上座標:

sample input

65 1

4 16 1

7 27 2

8 30

sample output

4思路:結果由時間和位置兩個狀態決定,所有需要使用二維空間。

a[i][j]表示第i秒在j位置上接到的餡餅數量

dp[i][j]表示前i秒在j位置上最多能接到多少餡餅

因為每秒只能在周圍三個位置接餡餅,所以狀態就可以從上一秒的這三個位置轉移過來。

dp[i][j]=max(dp[i-1][j-1], dp[i-1][j], dp[i-1][j+1])+a[i][j]。j為0或者10的時候要特殊處理。

注意:t是從第一秒開始的,我剛開始的時候從第0秒算,然後一直wa,,,後來才發現的

#include

#include

#include

using namespace std;

#define inf 0x3f3f3f3f

const int n

=1e5+10

;int a[n]

[15],dp[n]

[15];

int main()

dp[0]

[5]=

0;//只能從位置5開始

for(int i=

1;i<=maxt;i++)}

int ans=0;

for(int i=

0;i<=

10;i++

) ans=

max(ans,dp[maxt]

[i])

; cout<

}return0;

}

免費餡餅 (dp)

都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接...

免費餡餅(DP)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不 掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gamebo...

免費餡餅 (dp)

都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接...