讨论 / 我真惆怅了
垃圾桶 2012-06-04 04:59:00
点我顶贴 收藏 删除
目:[NOI1995]石子合并

状态: 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.

这个最小值问题到底出在哪

查看更多回复
提交回复