- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
noip2000-209提高组初赛-完善程序-题目noip2000-2009提高组初赛-完善程序-题目
noip2000-2009提高组初赛-完善程序-题目
PAGE 1
第 PAGE 11 页 2010-10-11
NOIP2009
五.完善程序 (前5空,每空2分,后6空,每空3分,共28分)
1.(最大连续子段和)给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。
var
a: array[1..100] of integer;
n, i, ans, len, tmp, beg: integer;
begin
read(n);
for i := 1 to n do
read(a[i]);
tmp := 0;
ans := 0;
len := 0;
beg :=______;
for i := 1 to n do
begin
if tmp + a[i] ans then
begin
ans := tmp + a[i];
len := i - beg;
end
else if (______) and (i - beg len) then
len := i - beg;
if tmp + a[i]______ then
begin
beg :=______;
tmp := 0;
end
else
______;
end;
writeln(ans, , len);
end.
2. (寻找等差数列) 有一些长度相等的等差数列(数列中每个数都为0~59的整数),设长度均为L,将等差数列中的所有数打乱顺序放在一起。现在给你这些打乱后的数,问原先,L最大可能为多大?先读入一个数n(1=n=60),再读入n个数,代表打乱后的数。输出等差数列最大可能长度L。
var hash: array[0..60] of integer; n, x, ans, maxnum, i: integer;
function work(now: integer): boolean;
var ok: boolean; first, second, delta, i: integer;
begin
while ((______) and (hash[now]=0)) do inc(now);
if now maxnum then begin work := true; exit; end;
first := now;
for second := first to maxnum do
if hash[second] 0 then
begin
delta :=______;
if first + delta *______ maxnum then break;
if delta = 0 then ok:=(____________)
else
begin
ok := true;
for i := 0 to ans - 1 do ok :=______ and (hash[first+delta*i]0);
end;
if ok then
begin
for i := 0 to ans - 1 do dec(hash[first+delta*i]);
if work(first) then begin work := true;exit; end;
for i := 0 to ans - 1 do inc(hash[first+delta*i]);
end;
end;
work := false;
end;
begin
fillchar(hash, sizeof(hash), 0); read(n); maxnum := 0;
for i := 1 to n do
begin
read(x); inc(hash[x]);
if x maxnum then
maxnum := x;
end;
for ans := n downto 1 do
if (n mod ans = 0) and______ then
begin
writeln(ans);
break;
end;
end.
NOIP2008
五.完善程序(前6空,每空3分,后5空,每
您可能关注的文档
- IE工程师专业英语精简IE工程师专业英语精简版.doc
- IPO保荐业务工作底稿录IPO保荐业务工作底稿目录.doc
- ISO13485案例习ISO13485案例习题.doc
- 沈阳精神科医院沈阳精神科医院.ppt
- 沈阳建筑大学考研,结力力学习题集,(刘永军),答案详解沈阳建筑大学考研,结力力学习题集,(刘永军),答案详解.doc
- 沈阳机床(集团)有限责任公司员工带薪年休假实施办法沈阳机床(集团)有限责任公司员工带薪年休假实施办法.pdf
- ISO9000、ISO4000、OHSMS18000、HACCP管理体系认证证书的英文...ISO9000、ISO14000、OHSMS18000、HACCP管理体系认证证书的英文....doc
- 沈阳航空航天大学多媒体作业沈阳航空航天大学多媒体作业.doc
- ISO9000标准化认财务部工作管理手册ISO9000标准化认证财务部工作管理手册.doc
- ISO9000-200理解2ISO9000-2000理解2.doc
文档评论(0)