time limit:1000ms memory limit:65536k
total submit:164 accepted:83
description
現在要把m
mm本有順序的書分給k
kk個人複製(抄寫),每個人的抄寫速度都一樣,一本書不允許分給兩個或兩個以上的人抄寫,分給每個人的書,必須是連續的,比如不能把第
一、第三、第四本書給同乙個人抄寫。
現在請你設計一種方案,使得複製時間最短。複製時間為抄寫最多的人用去的時間。
input
第一行兩個整數,m,k
(k
<=m
<
=500
)m,k(k<=m<=500)
m,k(
k<=m
<=5
00)第二行為m個整數,第i個數表示第i本書的頁數。
output
最短時間
sample input
9 31 2 3 4 5 6 7 8 9
sample output
17這道題可以用dpdp
dp解 (可一開始我還是打了爆搜)
設f [k
][n]
f[k][n]
f[k][n
]表示前k
kk個人抄寫m
mm本書,需要的最短時間。我先做了乙個字首和,i
ii列舉人數,j
jj
#include
#include
#include
using namespace std;
const int maxn=
1000000000
;int a[
600]
,f[600][
600]
;//f是dp
int main()
for(int i=
1;i<=k;i++
)//列舉人數}}
cout<[m];
}
書的複製 題解
現在要把m本有順序的書分給k個人複製 抄寫 每個人的抄寫速度都一樣,一本書不允許分給兩個或兩個以上的人抄寫,分給每個人的書,必須是連續的,比如不能把第 一 第三 第四本書給同乙個人抄寫。現在請你設計一種方案,使得複製時間最短。複製時間為抄寫最多的人用去的時間。第一行兩個整數,m,k k m 500 ...
二解 書的複製
題目詳見 本題有兩種解法 一.動態規劃 類似於乘積最大那道題,關鍵是劃分好書的分配方式,因為書本抄寫是連續的,因此該問題是滿足無後效性的,我們可以以抄書的人數為階段,dp i j 表示前i個人抄寫j本書需要抄寫所消耗的最少時間.動態規劃轉移方程為 dp i j min dp i j max dp i...
書的複製(抄書問題)
現在要把 m 本有順序的書分給 k 給人複製 抄寫 每乙個人的抄寫速度都一樣,一本書不允許給兩個 或以上 的人抄寫,分給每乙個人的書,必須是連續的,比如不能把第 一 第三 第四本書給同乙個人抄寫。現在請你設計一種方案,使得複製時間最短。輸出共 k 行,每行兩個整數,第 i 行表示第 i 個人抄寫的書...