書的複製 題解

2021-10-01 11:09:59 字數 896 閱讀 3969

現在要把m本有順序的書分給k個人複製(抄寫),每個人的抄寫速度都一樣,一本書不允許分給兩個或兩個以上的人抄寫,分給每個人的書,必須是連續的,比如不能把第

一、第三、第四本書給同乙個人抄寫。

現在請你設計一種方案,使得複製時間最短。複製時間為抄寫最多的人用去的時間。

第一行兩個整數,m,k(k<=m<=500)

第二行為m個整數,第i個數表示第i本書的頁數。

最短時間 抄寫時間最多的人中最短的人

input

9 31 2 3 4 5 6 7 8 9

output首先要求乙個字首和 f [ i ] 1]=當前的字首和

然後列舉人數 從 2 開始,因為 1 個人那不就是時間總和嗎,對不對

再列舉本數 從 i 開始,你好歹一人一本吧,沒那麼摳吧

最後尋找斷點,找出抄寫時間最長的那個人和 f [ j ] [ i ] 比小,小的存進 f 陣列

從 i – 1 開始,到 < j,f [ j ] [ i ] = 乙個很大很大的數

動態轉移方程:f [ j ] [ i ] = min ( max ( f [ k ] [ i-1 ] ,a [ j ] - a [ k ] ) , f[ j ] [ i ] ) ;

#include

#include

#include

using namespace std;

int n,m;

int a[550],b[550],f[550]

[550]

;int main(

)for

(int i=2;i<=m;i++) //列舉人數

for(int j=i;j<=n;j++) //列舉本數

cout<[m]

}

書的複製 normal DP

time limit 1000ms memory limit 65536k total submit 164 accepted 83 description 現在要把m mm本有順序的書分給k kk個人複製 抄寫 每個人的抄寫速度都一樣,一本書不允許分給兩個或兩個以上的人抄寫,分給每個人的書,必須是...

二解 書的複製

題目詳見 本題有兩種解法 一.動態規劃 類似於乘積最大那道題,關鍵是劃分好書的分配方式,因為書本抄寫是連續的,因此該問題是滿足無後效性的,我們可以以抄書的人數為階段,dp i j 表示前i個人抄寫j本書需要抄寫所消耗的最少時間.動態規劃轉移方程為 dp i j min dp i j max dp i...

書的複製(抄書問題)

現在要把 m 本有順序的書分給 k 給人複製 抄寫 每乙個人的抄寫速度都一樣,一本書不允許給兩個 或以上 的人抄寫,分給每乙個人的書,必須是連續的,比如不能把第 一 第三 第四本書給同乙個人抄寫。現在請你設計一種方案,使得複製時間最短。輸出共 k 行,每行兩個整數,第 i 行表示第 i 個人抄寫的書...