【題目描述】
現在要把m本有順序的書分給k個人複製(抄寫),每乙個人的抄寫速度都一樣,一本書不允許給兩個(或以上)的人抄寫,分給每乙個人的書,必須是連續的,比如不能把第
一、第三和第四本書給同乙個人抄寫。
現在請你設計一種方案,使得複製時間最短。複製時間為抄寫頁數最多的人用去的時間。
【輸入】
第一行兩個整數m,k;(k≤m≤500)
第二行m個整數,第i個整數表示第i本書的頁數。
【輸出】
共k行,每行兩個整數,第i行表示第i個人抄寫的書的起始編號和終止編號。k行的起始編號應該從小到大排列,如果有多解,則盡可能讓前面的人少抄寫。
【輸入樣例】
9 3
1 2 3 4 5 6 7 8 9
【輸出樣例】
1 56 7
8 9【心得】線性dp的經典模型。課本上說的已經夠清楚了,不再贅述。
【ac**】
#include
#include
#include
using
namespace std;
const
int n=
505;
const
int inf=
0x7fffffff
;int m,k,a[n]
,d[n]
,f[n]
[n];
intpri
(int i,
int j)
t=i;
x=a[i]
;while
(x+a[t-1]
<=f[k]
[m])
pri(t-
1,j-1)
; cout<" "<}int
main()
for(
int i=
2;i<=k;i++
)for
(int j=
1;j<=m;j++
) f[i]
[j]=inf;
for(
int i=
2;i<=k;i++
)for
(int j=
1;j<=m;j++
)for
(int l=
1;l) f[i]
[j]=
min(f[i]
[j],
max(f[i-1]
[l],d[j]
-d[l]))
;pri
(m,k)
;}
資訊學奧賽一本通 小球(drop)
許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個節點的布林值。最初,所有的節點都是false,當訪問到乙個節點時...
資訊學奧賽一本通 小球(drop)
this drop is gonna last forever!許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個...
資訊學奧賽一本通(C 版)
資訊學奧賽一本通 c 版 總目錄 1.資訊學奧賽一本通 c 版 刷題 記錄 2.資訊學奧賽一本通 c 版 第一部分 c 語言 第一章 c 語言入門 3.資訊學奧賽一本通 c 版 第一部分 c 語言 第二章 順序結構程式設計 4.資訊學奧賽一本通 c 版 第一部分 c 語言 第三章 程式的控制結構 5...