Luogu P1854花店櫥窗布置(DP)

2022-05-01 02:06:11 字數 845 閱讀 5263

照例良心題目鏈結

此題使用f[i][j]表示前i束花放進前j個花瓶的時候的最大值。轉移方程如下

f[i][j]=max(f[i][j-1],f[i-1][j-1]+que[i][j])

其中que[i][j]表示第i束花放進第j個花瓶裡的情況。有這個轉移方程的原因是,每一束花在每乙個花瓶裡的情況只有兩種:放進去了和沒放進去。第一種f[i][j-1]就是沒放進去,第二種

f[i-1][j-1]+que[i][j]就是放進去了的情況

特殊的,當i>=j時第一種情況不能成立

路徑儲存死活沒想出來,最後參考題解發現了乙個遞迴輸出——於是就可恥的抄了下來。

**如下

#include#include

#include

#include

inline

long

long

read()

while

(isdigit(ch))

return num*f;

}int que[1000][1000

];int f[1000][1000

];int last[1000][1000

];void print(int a,int

b)

else print(a,b-1

);

return;}

intmain()

else f[i][j]=f[i][j-1

]; }

} printf(

"%d\n

",f[n][m]);

print(n,m);

return0;

}

luogu 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 再開個陣列記錄每次選擇的數的位置 最後遞迴輸出就行了 ...