HDU 1159 DP數塔變形

2021-07-09 18:21:51 字數 650 閱讀 8083

在一條x軸上,每個點在每個時刻都會有一定數量的餅,

問在規定時間內,可以可以最多得到多少餅;

就是把矩陣轉化為數塔,在每個時刻的某個位置都有三種可以到達當前位置的可能性;

即:左邊,不動,右邊;

dp[i][j]表示第i秒第j位置有多少個餡餅

狀態轉移方程為:dp[i][j]+=maxi(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1]); 即三個點中的最大值+下一此位置 = 最大收納;

所以ac**為:

#include#includeusing namespace std;

int maxi(int a,int b,int c)

int dp[100001][11];

int main()

dp[i][0]+=max(dp[i+1][0],dp[i+1][1]);

dp[i][10]+=max(dp[i+1][10],dp[i+1][9]);

}cout<



HDU 1159 DP之最長公共子串行

類似於字典序比較的最長公共子串行,只要找到狀態方程就比較好搞,從角標1開始計算不會出錯,從0還是報錯了 切防止對比溢位要在本來的基礎上 1計算 言歸正傳 dp型別都是狀態方程很重要 假設兩個作對比,分別是s1,s2,則一定有 則dp i j 就為s1前 i 個和s2前 j 個的公共子串行 動態方程就...

HDU 數塔DP思維設計

在講述dp 演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp 的題目,你能ac嗎 大神請繞道 不喜勿噴 請自己推狀態方程 第一種 數塔 由上往下 include in...

HDU 2084 數塔(簡單DP)

hdu 2084 數塔 題意 自上而下,選擇一條累計和最大的路徑 分析 頂點只與左右兩個子節點相關,且子節點路徑的選擇與頂點無關 無後效性 狀態dp i j 表示 i,j 點向下得到的最大累計和 轉移方程 dp i j max dp i 1 j dp i 1 j 1 v i j 核心 for i n...