資訊學奧賽一本通1278 複製書稿 evd

2021-10-12 03:46:05 字數 1288 閱讀 4482

【題目描述】

現在要把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...