題目描述
總公司擁有高效裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問:如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m≤15,n≤10。分配原則:每個公司有權獲得任意數目的裝置,但總台數不超過裝置數m。
輸入格式
第一行有兩個數,第乙個數是分公司數n,第二個數是裝置台數m。
接下來是乙個n*m的矩陣,表明了第 i個公司分配 j臺機器的盈利。
輸出格式
第1行為最大盈利值
第2到第n為第i分公司分x臺
樣例樣例輸入
3 330 40 50
20 30 50
20 25 30
樣例輸出
701 1
2 13 1
這道題我認為dp還算好理解,可獨流的是輸出各個公司的分配情況,還要用遞迴(絕望……)
以題目變數為例,每次更新(前 i 個公司分配的 k 臺機器) +( 第i臺機器分配 j-k 臺機器)的最大利潤
一看**就懂啦:
#include#includeusing
namespace
std;
int val[20][20],f[20][20
];int mt=-1
;
int show(int i,int
j) }
}int
main()
f[i][j]=mt;}}
printf(
"%d\n
",f[n][m]);
show(n,m);
return0;
}
線性DP 機器分配
某總公司擁有高效生產裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為總公司提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。分配原則 每個公司有權獲得任意數目的裝置,但總台數不得超過總裝置數m。其中m 100,n 100。第一行為兩個整數m,n。接下來...
線性DP之機器分配
自己瞅 懶得打了 前面是很簡單的線性dp,後面是模擬遞迴輸出方案,模擬遞迴可以設ny為機器數機器數,nx表示第nx個公司,tot為總盈利,那麼則有 a nx i dp nx 1 ny i tot 即可進行轉移,進而記錄路徑 我還記得有道題叫cd,可以看一下 includeusing namespac...
DP 機器分配
總公司擁有高效生產裝置m臺,準備分給下屬的n個公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不得超過總裝置數m。第一行儲存兩個數,第乙個數是裝置台數m,...