題意:
把花放在花瓶裡,每個花對花瓶有不同的val值,輸出最大的val和方案
思路:很好想的dp,dp[i][j]=max(dp[i-1][k]+a[i][j]),dp在路徑記錄的時候,一般都開和狀態一樣的陣列,path[i][j]表示使得第i朵花放在第j個花瓶時候最大的上一層放在第幾個花瓶,遞迴輸出即可
#include
#include
#include
using
namespace std;
typedef
long
long ll;
int dp[
105]
[105];
int path[
105]
[105];
int a[
105]
[105];
const ll inf=
-0x3f3f3f3f
;void
print
(int x,
int y)
print
(x-1
,path[x]
[y])
;printf
("%d "
,y);
}int
main()
int ans=inf;
int cnt=0;
for(
int i=
1;i<=v;
++i)
}printf
("%d\n"
,ans)
;print
(f,cnt)
;return0;
}
洛谷P1854 花店櫥窗 線性dp 路徑輸出
題目大意 給定 n 個數字,編號分別從 1 n,m 個位置,n 個數字按照相對大小順序放在 m 個位置裡,每個數放在每個位置上有乙個對答案的貢獻值,求一種擺放方式使得貢獻值最大。題解 一道典型的線性dp問題,設 dp i j 表示前 i 個數擺放在了不超過前 j 個位置,且第 i 個數字正好放在 j...
洛谷 P1854 花店櫥窗布置
題目描述 某花店現有f束花,每一束花的品種都不一樣,同時至少有同樣數量的花瓶,被按順序擺成一行,花瓶的位置是固定的,從左到右按1到v順序編號,v是花瓶的數目。花束可以移動,並且每束花用1到f的整數標識。如果i j,則花束i必須放在花束j左邊的花瓶中。例如,假設杜鵑花的標識數為1,秋海棠的標識數為2,...
洛谷dp記錄
線性dp,分開處理資料 include using namespace std const int n 300010 int m,s,t,dp n dpt n 分開計算跑步還是等待 intmain 能閃現就閃現 else 不能閃現就都記錄下來 for int i 1 i t i cout no en...