description
總公司擁有高效生產裝置m臺,準備分給下屬的n個公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問:如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m《=15,n〈=10。分配原則:每個公司有權獲得任意數目的裝置,但總台數不得超過總裝置數m。
input
第一行儲存兩個數,第乙個數是裝置台數m,第二個數是分公司數n。接下來是乙個m*n的矩陣,表明了第i個公司分配j臺機器的盈利。
output
最大盈利
sample input
1510
3667868
8288196
7582
10768
136105
99104
61176
127133
184120
223179
198134
113247
225205
283136
273217
249140
117312
296205
286207
315306
291224
209346
370272
292279
317332
372227
223375
370295
361327
363373
453277
286410
463316
393413
369387
542302
289419
473393
425443
455407
561358
336477
491445
469521
554478
589440
364572
537512
475534
570520
603530
405574
602593
496542
591547
654587
431587
664637
577632
657645
700635
527620
680680
656643
670670
730715
573676
721707
713719
685685
757770
642744
728745
sample output
1167
題解:f[i,j]表示前i個公司分配j臺機器的最大盈利,v[i,j]表示第i個公司分配j臺機器的盈利,狀態轉移方程為:
max=
f[i,j]=max
1<=i<=n,1
<=j<=m,0
<=k<=j
f[n,m]為所求。
var m,n,max,i,j,k:longint;
f,v:array [0..10,0..15] of longint;
begin
readln(m,n);
for i:=1
to m do
for j:=1
to n do
read(v[j,i]);
for i:=1
to n do
for j:=1
to m do
begin
max:=0;
for k:=0
to j do
if f[i-1,k]+v[i,j-k]>max then max:=f[i-1,k]+v[i,j-k];
f[i,j]:=max;
end;
writeln(f[n,m]);
end.
動態規劃 機器分配 (ssl 1639)
總公司擁有高效生產裝置m臺,準備分給下屬的n個公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不得超過總裝置數m。第一行儲存兩個數,第乙個數是裝置台數m,...
DP 機器分配
總公司擁有高效生產裝置m臺,準備分給下屬的n個公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不得超過總裝置數m。第一行儲存兩個數,第乙個數是裝置台數m,...
機器分配 DP
題目 總公司擁有高效生產裝置m臺,準備分給下屬的n個公司。各分公司若獲得這些裝置,可以為國家提供一定的盈利。問 如何分配這m臺裝置才能使國家得到的盈利最大?求出最大盈利值。其中m 15,n 10。分配原則 每個公司有權獲得任意數目的裝置,但總台數不得超過總裝置數m。輸入 第一行儲存兩個數,第乙個數是...