| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
谁做过浙江大学2059?http://acm.zju.edu.cn/show_problem.php?pid=2059
我是在是不知道我的DP哪儿错了.
哪位就当作练练读程序的能力帮我看看 ? :-)
program z2059;
{$APPTYPE CONSOLE}
uses
SysUtils;
type thetype=record
s:integer;
l:longword;
end;
var sum,temp,n:integer;
i,i2,now,from:longword;
haveone:array [1..2000] of boolean;
list:array[1..1000000] of thetype;
procedure solve;
begin
sum:=0; fillchar(list,sizeof(list),0); fillchar(haveone,sizeof(haveone),false);
for i:=1 to n do
begin
read(temp);
list[i].s:=temp;
haveone[temp]:=true;
sum:=sum+temp;
list[i].l:=i;
end;
if (odd(sum)) or (sum>4000) then begin writeln('Sorry'); exit; end;
sum:=sum div 2; from:=0; now:=n;
if haveone[sum]=true then begin writeln(sum); exit; end;
repeat
inc(from);
for i2:=list[from].l+1 to n do
begin
temp:=list[i2].s+list[from].s;
if temp=sum then begin writeln(sum); exit; end;
if (temp<sum) and (haveone[temp]=false) then
begin
haveone[temp]:=true;
inc(now);
list[now].s:=temp;
list[now].l:=i2;
// if now>10000 then begin writeln('Sorry'); exit; end;
end;
end;
until from>=now;
writeln('Sorry');
end;
begin
// assign(input,'e:\acm\zoj\2059.txt');
// reset(input);
read(n);
while n>0 do
begin
solve;
readln;
read(n);
end;
// writeln;
{ TODO -oUser -cConsole Main : Insert code here }
end.
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator