動態規劃基礎題 機器分配

2021-07-23 09:02:58 字數 1031 閱讀 1803

題目描述

總公司擁有高效裝置m臺,準備分給下屬的n個分公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問:如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m≤15,n≤10。分配原則:每個公司有權獲得任意數目的裝置,但總台數不超過裝置數m。

輸入輸出格式

輸入格式:

第一行有兩個數,第乙個數是分公司數n,第二個數是裝置台數m。

接下來是乙個n*m的矩陣,表明了第 i個公司分配 j臺機器的盈利。

輸出格式:

第1行為最大盈利值

第2到第n為第i分公司分x臺

我們分析,對於分配給前i個公司j臺機器的價值,實際上相當於前i-1個公司分配k臺機器並給第i個公司分配j-k臺機器的價值總和。由此,這種最優子結構自然讓我們能列出如下的轉移方程:

令f[i][j]表示分配給前i個公司j臺機器的價值,則有

f[i][j]=f[i-1][k]+v[i][j-k]

其中,k從0~j迴圈,取出最大值即可。

我們很容易寫出轉移過程的**:

f[i][j]=max(f[i][j],f[i-1][k]+v[i][j-k]);
那麼,如何將轉移的過程記錄下來呢?我們可以在計算完成後,採用倒推的思想。採用遞迴實現的具體過程如下:

void print_link(int i,int j)

return;

}

核心部分已經完成,我們來撰寫剩餘的**:

#include 

#include

#define reset(x) memset(x,0,sizeof(x))

#define max(x,y) (x>y?x:y)

using namespace std;

int v[20][20],f[20][20];

void print_link(int i,int j)

return;

}int main()

動態規劃 機器分配

問題描述 機器分配 hnoi 95 一 問題描述 總公司擁有高效生產裝置 m 臺,準備分給下屬的 n 個公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這 m 臺裝置才能使國家得到的盈利最大?求出 最大盈利值。其中 m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但...

動態規劃 機器分配

時間限制 1 sec 記憶體限制 64 mb 提交 7 解決 4 提交 狀態 討論版 命題人 題目描述 魔法學院購進高效生產裝置m台以轉換魔法石能量,準備分給學院的n個小組。各小組若獲得這些裝置,可以為學院提供一定的魔法石能量。問 如何分配這m臺裝置才能使魔法石能量最大?求出最大魔法石能量值。其中m...

43 動態規劃 機器分配問題

import random as rd from pyscipopt import model,quicksum def sub ll print l,digit s for i in range len l s s str l i temp l i digit temp 1 while temp ...