對於每乙個點由其上一步的結點傳遞過來,存在最優子結構,即對於正確路徑的上的任意一點將都是最優的,並且存在最優子結構。保留最優值的時候注意方法,不然tle。
**如下:
#include #include#include
#include
#include
#define maxn 200000
using
namespace
std;
int n, m, dp[maxn+5], g[maxn+5], mm[maxn+5
];inline
int max(int x, int
y)void update(int x, int
y) dp[x*m+y] = max(dp[x*m+y], mm[i]+g[x*m+y]);
} dp[x*m+y] = max(dp[x*m+y], mm[x]+g[x*m+y]);
}int
dp()
} mm[i] = max(mm[i], dp[i*m+m-1
]); res =max(res, mm[i]);
}return
res;
}int
main()
}printf(
"%d\n
", dp());
}return0;
}
HDU 2845 Beans 最大不連續子列和
beans 題意 分析 玩 吃豆子 的遊戲,規則如圖 對於這個二維的問題,我們可以分別對行列做兩次dp。先對每一行求出最大的不連續子列和 移方程 r i max r i 2 r i r i 1 i 2 注意下標範圍。然後對每一行的最大值求最大不連續子列和,思路同上。如下 include define...
hdu1513 Palindrome 動態規劃
求讓乙個字串變為回文串所需最少插入字元數 定義狀態dp i j 表示從左到右i個字元,從右到左j個字元,要讓他們回文需要插入多少字元 顯然,a i a j 時,dp i j d p i 1 j 1 a i a j 時,就需要插入乙個字元,因此dp i j m in d p i 1 j dp i j ...
HDU 4455 Substrings 動態規劃
題意 給定乙個整數串,有q組詢問,問這個串中長度為w的子串中不同的數字之和為多少,這題的動態規劃感覺很有技巧性。解法 設f i 表示w為 i 時不同的數字之和,那麼考慮f i 1 和f i 的關係可以得知 f i 1 就是從f i 中去除最後乙個子串後在每個串後加上乙個數字的情況,因此可以得到這樣的...