洛谷P1854 花店櫥窗 線性dp 路徑輸出

2022-05-20 14:21:17 字數 697 閱讀 1447

題目大意:給定 n 個數字,編號分別從 1 - n,m 個位置,n 個數字按照相對大小順序放在 m 個位置裡,每個數放在每個位置上有乙個對答案的貢獻值,求一種擺放方式使得貢獻值最大。

題解:一道典型的線性dp問題,設 \(dp[i][j]\) 表示前 i 個數擺放在了不超過前 j 個位置,且第 i 個數字正好放在 j 個位置的最大貢獻值。

階段:已經擺放了 i 個數字。

狀態轉移方程為:\(dp[i][j]=max\+mp[i][j]\)。

需要注意的是,這道題中每次決策集合的起始端點是發生改變的,因此不能採用滾動最小值的方式優化。

**如下

#include using namespace std;

const int maxn=110;

const int inf=0x3f3f3f3f;

int n,m,mp[maxn][maxn],dp[maxn][maxn],pre[maxn][maxn];

void read_and_parse()

}void dfs(int x,int y)

void solve()

int idx=0,ans=-inf;

for(int j=1;j<=m;j++)if(ansprintf("%d\n",ans);

dfs(n,idx);

}int main()

洛谷 P1854 花店櫥窗布置

題目描述 某花店現有f束花,每一束花的品種都不一樣,同時至少有同樣數量的花瓶,被按順序擺成一行,花瓶的位置是固定的,從左到右按1到v順序編號,v是花瓶的數目。花束可以移動,並且每束花用1到f的整數標識。如果i j,則花束i必須放在花束j左邊的花瓶中。例如,假設杜鵑花的標識數為1,秋海棠的標識數為2,...

P1854 花店櫥窗布置

時間限制 1 sec 記憶體限制 64 mb 假設你想以最美觀的方式布置花店的櫥窗。你有f束花,每束花的品種都不一樣,同時,你至少有同樣數量的花瓶,被按順序擺成一行。花瓶的位置是固定的,並從左至右,從1至v順序編號,v是花瓶的數目,編號為1的花瓶在最左邊,編號為v的花瓶在最右邊。花束則可以移動,並且...

P1854 花店櫥窗布置

給乙個 m times n 的矩陣,m leq n 在每一行選乙個數,滿足每一行選擇數的位置在上一行選擇數字置的後面,求所有選擇的數的和的最大值和每一行選擇的數的位置 資料不大 搞式子 dp i j max dp i 1 k val i j k 再開個陣列記錄每次選擇的數的位置 最後遞迴輸出就行了 ...