都說天上不會掉餡餅,但有一天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馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接...