機器分配 SSL 1639

2021-07-28 02:35:08 字數 1980 閱讀 7783

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。輸入 第一行儲存兩個數,第乙個數是...