- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划——复制书稿
动态规划-复制书稿
〖题目描述〗假设有M本书(编号为1,2,…M),想将每本复制一份,M本书的页数可能不同(分别是P1,P2,…PM)。任务是将这M本书分给K个抄写员(K〈=M〉,每本书只能分配给一个抄写员进行复制,而每个抄写员所分配到的书必须是连续顺序的。意思是说,存在一个连续升序数列 0 = bo b1 b2 … bk-1 bk = m,这样,第I号抄写员得到的书稿是从bi-1+1到第bi本书。复制工作是同时开始进行的,并且每个抄写员复制的速度都是一样的。所以,复制完所有书稿所需时间取决于分配得到最多工作的那个抄写员的复制时间。试找一个最优分配方案,使分配给每一个抄写员的页数的最大值尽可能小(如存在多个最优方案,只输出其中一种)。(GDOI99 Books).
〖输入格式〗第一行两个数m,k:表示书本数目与人数;第二行m个由空格分隔的整数,m本书每本的页数.
〖输出格式〗共k行。每行两个整数:第I行表示第I抄写员抄的书本编号起止。
〖输入输出样例〗
输入样例
输出样例
9 31 2 3 4 5 6 7 8 9
1 56 7 8 9
〖参考程序〗
program books; uses crt; type lx=packed Array [1..500] of longint; rx=packed Array [1..500] of longint; var a1:array [1..500] of longint; a:array [1..500] of ^lx; z:array [1..500] of ^rx; b:array [1..500] of longint; c,d,e,f,k,m:longint; f1,f2:text; procedure try; var c,d,e,f,g,h,i,j,min,max:longint; flag,flag1:boolean; l:array [1..500] of longint; begin for c:=2 to k do begin new (a[c]); new (z[c]); if c3 then dispose (a[c-2]); for d:=c to m do begin max:=maxlongint; for e:=1 to d-1 do begin min:=0; if (a[c-1]^[e]min) then min:=a[c-1]^[e]; f:=a1[d]-a1[e]; if (fmin) then min:=f; if minmax then begin max:=min; i:=e; end; end; a[c]^[d]:=max; z[c]^[d]:=i; end; end; j:=0; i:=m; for c:=k downto 2 do begin j:=j+1; l[j]:=z[c]^[i]; i:=l[j]; end; rewrite (f2); j:=1; for c:=k-1 downto 1 do begin writeln (f2,j, ,l[c]); j:=l[c]+1; end; writeln (f2,j, ,m); close (f2); end; begin assign (f1,books.dat); assign (f2,books.out); reset (f1); readln (f1,m,k); new (a[1]); d:=0; for c:=1 to m do begin read (f1,b[c]); d:=d+b[c]; a[1]^[c]:=d; a1[c]:=d; end; close (f1); try; end.
您可能关注的文档
最近下载
- (高清版)B-T 2099.1-2021 家用和类似用途插头插座 第1部分:通用要求.pdf VIP
- 劳动创造美好生活中职生劳动教育全套教学课件.pptx
- 人工智能在高中美术课堂中的应用.pdf
- 西藏自治区日喀则市高一入学数学分班考试真题含答案.docx VIP
- 2025黑龙江省建设投资集团有限公司面向系统内部及社会招聘12人笔试备考试题及答案解析.docx VIP
- 医院医德医风考评公示制度医德医风考评制度及考评实施细则.docx
- 晶体工程资料.pdf VIP
- 成都川师锦华小升初入学分班考试英语考试试题及答案.docx VIP
- 第六章晶体工程.ppt VIP
- ASUS华硕ROG SWIFT PG65UQ中文说明书.pdf VIP
文档评论(0)