HDU 1176 免費餡餅

2022-04-30 01:15:14 字數 884 閱讀 3990

令dp[i][j]為i時刻j位置時的最大餡餅量。由於每個狀態只能由臨近的3個狀態轉移而來,所以可以較為簡單的確定遞推式。

第乙個要思考的點:正推還是逆推?逆推的好,正推的話不知哪些狀態可走,而逆推的話,是在當前狀態下確定之前的狀態,所以不存在這個問題。

第二個思考的點:為什麼答案是dp[0][6],6是因為為了去掉越界的判斷,把位置從[0,10]對映到了[1,11],0是因為,1時刻可能在4、5、6的位置,所以dp[1][6]並不能代表0時刻5開始的答案,上拔一層即可。

#include #include 

using

namespace

std;

#define ll long long

#define mst(a,b) memset(a,b,sizeof(a))

#define rep(i,a,b) for(ll i=(a);i<(b);++i)

const

int inf = 0x3f3f3f3f, maxn = 1e5 + 5

;int dp[maxn][20

];#define max3(a,b,c) max(max(a,b),c)

intmain()

for (int i = m - 1; i >= 0; --i)

for (int j = 14; j >= 0; --j)

dp[i][j] += max3(dp[i + 1][j], dp[i + 1][j - 1

] , dp[i + 1][j + 1

]); printf(

"%d\n

", dp[0][6

]); }

return0;

}

hdu1176 免費餡餅

解題思路 動態規劃 可以看成倒的塔,這個地方轉換過來就快了,狀態轉移方程 d i j max d i 1 j 1 d i 1 j d i 1 j 1 最後答案是d 0 6 ac include include include include include using namespace std d...

hdu1176 免費餡餅

簡單dp 題目要求 求dp 0 5 到dp t 的最大值 類似數塔 只不過1 9號位有三個方向可以選 0和10只有兩個 可將所有的時間段和餡餅看成是乙個矩陣,時間就是行數,掉餡餅的就是列數,則就是數字三角形問題,從最底層找一條路徑,使得路徑上的和最大。dp i j 表示 i 時刻 j位置的最大值 開...

hdu1176 免費餡餅

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