切换到宽版
  • 6694阅读
  • 7回复

NOIP2006复赛提高组第一题答案(P) [复制链接]

上一主题 下一主题
离线beckham_cz
 
只看楼主 倒序阅读 0 发表于: 2006-11-22
const
  maxn=100;
var
  n:longint;
  a:array[1..2*maxn+1] of longint;
  opt:array[1..2*maxn,1..2*maxn] of longint;
procedure setup;
begin
  assign(input,'energy.in');
  assign(output,'energy.out');
  reset(input);
  rewrite(output);
end;
procedure closeit;
begin
  close(input);
  close(output);
end;
procedure init;
var
  i:longint;
begin
  readln(n);
  for i:=1 to n do read(a[i]);
  for i:=1 to n do a[i+n]:=a[i];
  a[n*2+1]:=a[1];
end;
procedure Dp;
var
  i,j,len,max,k:longint;
begin
  for len:=2 to n do
    for i:=1 to 2*n+1-len do
    begin
        j:=i+len-1;
        max:=-maxlongint;
        for k:=i to j-1 do
        if max<opt[i,k]+opt[k+1,j]+a[i]*a[k+1]*a[j+1] then
          max:=opt[i,k]+opt[k+1,j]+a[i]*a[k+1]*a[j+1];
        opt[i,j]:=max;
    end;
end;
procedure print;
var
  ans,i:longint;
begin
  ans:=-maxlongint;
  for i:=1 to n+1 do
    if opt[i,i+n-1]>ans then ans:=opt[i,i+n-1];
  writeln(ans);
end;
begin
  setup;
  init;
  Dp;
  print;
  closeit;
end.
离线beckham_cz
只看该作者 1 发表于: 2006-11-23
没人顶?自己顶!
离线elba
只看该作者 2 发表于: 2006-11-23
作一下解释?
离线baideye
只看该作者 3 发表于: 2006-12-01
是的。做一下解释
离线zhangce75
只看该作者 4 发表于: 2006-12-01
谢谢楼主
离线baideye
只看该作者 5 发表于: 2006-12-06
dp是什么意思?
离线baideye
只看该作者 6 发表于: 2006-12-06
dp是什么意思?
离线hy6210cs
只看该作者 7 发表于: 2007-02-05
好象有一点问题~~我的好象没法启动呀~~~~~~~~~~~~~~~~~~
快速回复
限100 字节
 
上一个 下一个