經典的動態規劃

2022-02-13 05:23:05 字數 1562 閱讀 6459

有乙個動態規劃100例...看到機房裡shenben的複習資料...加上垃圾的dp....整理一下。

一、資源分配問題

題目大意:有m個裝置,n個公司,v[i][j]表示第i個公司分j個裝置的貢獻值。怎樣分配使貢獻值的和最大?

狀態:前i個公司分j個裝置。

f[i][j]表示前i個公司分j個裝置,列舉第i個公司分k個裝置。

狀態轉移方程:f[i][j]=max

這個還挺簡單的。

題目大意:有n首歌曲和m個唱片,每首歌的時長為tim[i],每個唱片能容納歌曲的時間為t,並且還要

按順序將歌曲放入唱片中,即第i個唱片的最後一首歌曲比第i+1個唱片的第乙個歌曲發行的時間早。

這個題做法很多。

狀態:狀態是對於每乙個歌曲來的,當前的這首歌曲有三個狀態,不加入任何乙個唱片,加入當前唱片,

加入乙個新的唱片。

題解:方法一  dfs搜每個狀態就可以了,有乙個剪枝,當把剩下的歌曲都加入唱片中仍比答案小時return.

我一開始dfs傳的引數為唱片,裝完第乙個再裝第二個...好混亂..是我zz。方法二:01揹包 dp[k][j]前k個唱片

第k個唱片時間為j時能放的歌曲數。dp[k][j]=max+1.放入前乙個唱片和當前唱片。

題目大意:有一堆物品,每次按順序取前十個,不夠十個全都取。物品只有a,b,c三種,每次可以將當前手中所擁有

十個物品中的a或者b或者c清0,每次操作後需要按順序再哪物品,滿足手中有10個物品。問最少需要幾次操作可以使

物品清完。

狀態:從一堆物品中拿了s個,目前手中有a個a,b個b,c個c的方案數。

轉移方程:用的記憶化搜尋 dp[s][a][b][c]=min+1

二、線性動態規劃

狀態:以a[i]結尾的最長嚴格上公升子串行的最大長度

轉移方程:dp[i]=max其中j

題目大意:先生跳舞跳n次,每次跳的位置是a[i],(1,2,3,4),開始在0,從a跳到b的代價是不一樣的,且左右腳不能在

乙個位置,求最小的價值。

狀態:發現我們需要記錄的狀態是懷特先生跳到第幾次,左腳和右腳的位置分別是什麼。

轉移方程:f[i][a[i]][k]=min,f[i][j][a[i]]=min

題目大意:有n個人,每個人可以與他的右邊的人決鬥,敗者出局,且戰鬥力沒有傳遞性。決鬥的順序不同最終的勝者就不同。

問不同的決鬥順序最後可以勝利的人有多少個。

題解:區間dp斷鏈成環。不要考慮誰和誰決鬥,勝還是敗,只要最後他能和自己決鬥就說明就剩下他乙個人了。

轉移方程類似於floyed。

waiting.....

動態規劃及其動態規劃經典例題

動態規劃是最重要 最經典的演算法之一,學好動態規劃對我們十分重要,掌握動態規劃對解決某些問題會起到事半功倍的效果。特點 可以把原始問題劃分為一系列子問題 求解每個子問題僅一次,並將其結果儲存到乙個表中,以後用到時直接訪問,不重複計算,節省時間。自底向上地計算 適用範圍 原問題可以分為多個相關子問題,...

動態規劃經典問題

from 實現在 維基百科對動態規劃的定義 動態規劃 英語 dynamic programming,簡稱dp 是一種在數學 電腦科學和經濟學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。動態規劃常常適用於有重疊子問題 1 和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於...

動態規劃經典問題

子串 在給定的字串中選取連續的一段 子串行 可以不連續,但是要保證出現的順序與原字串相同 比如字串abcdefg abc既是子串又是子串行 acd只是子串行 一 最大連續子串行和 給定乙個整數序列a1,a2 an。求最大的連續的子串行的和。比如的最大連續子串行的和為5 3 1 1 2 萬能列舉?每次...