状态: Unaccepted
测评机: Xeond[6]
得分: 40分
提交日期: 2012-6-4 19:58:00
有效耗时: 687毫秒
测试结果1: 通过本测试点|有效耗时172ms
测试结果2: 通过本测试点|有效耗时187ms
测试结果3: 测试结果错误.错误结果为:95
125
正确结果应为:84
125
测试结果4: 通过本测试点|有效耗时156ms
测试结果5: 通过本测试点|有效耗时172ms
测试结果6: 测试结果错误.错误结果为:121
171
正确结果应为:110
171
测试结果7: 测试结果错误.错误结果为:290
475
正确结果应为:275
475
测试结果8: 测试结果错误.错误结果为:3175
5081
正确结果应为:1289
5081
测试结果9: 测试结果错误.错误结果为:18930
24595
正确结果应为:5913
24595
测试结果10: 测试结果错误.错误结果为:32767
95356
正确结果应为:12533
95356
var b,i,j,k,t,m,n,maxans,minans:longint;
a:array[0..350]of longint;
ff,f:array[0..350,0..350]of longint;
s:array[0..350,0..350]of boolean;
function min(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end;
function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end;
function maxdfs(i,j,k,x:longint):longint;
begin
if (i<1)or(j>3*n)or(x=1) then exit(0);
if f[i,j]<>0 then exit(f[i,j]);
maxdfs:=max(maxdfs(i-1,j,k+a[i-1],x-1)+k+a[i-1],maxdfs(i,j+1,k+a[j+1],x-1)+k+a[j+1]);
f[i,j]:=maxdfs;
end;
function mindfs(i,j,k,x:longint):longint;
begin
if x=1 then exit(0);
if (i<1)or(j>3*n) then exit(maxint);
if ff[i,j]<>0 then exit(ff[i,j]);
mindfs:=min(mindfs(i-1,j,k+a[i-1],x-1)+k+a[i-1],mindfs(i,j+1,k+a[j+1],x-1)+k+a[j+1]);
ff[i,j]:=mindfs;
s[i,j]:=true;
end;
begin
readln(n);
minans:=maxint;
for i:=1 to n do
begin
read(a[i]);
a[i+n]:=a[i];
a[i+2*n]:=a[i];
end;
for i:=n+1 to 2*n do
begin
mindfs(i,i,a[i],n);
maxdfs(i,i,a[i],n);
end;
for i:=n+1 to 2*n do
begin
if f[i,i]>maxans then maxans:=f[i,i];
if ff[i,i]<minans then minans:=ff[i,i];
end;
writeln(minans);
write(maxans);
end.
这个最小值问题到底出在哪