您的位置:首页 > 其它

PKU1159 palindrome

2010-08-01 00:02 302 查看
这道动态规划和我前几天做的括号序列基本一个思路,都是明显的线性结构,状态转移是十分简单的。但问题是这回规模不小……于是,我傻乎乎地开了个5000*5000的数组MLE,想到了滚动数组之后又做了无数次多余的取模运算TLE……哎……
program palindrome;
var
f:array[0..5005,0..2] of longint;
st:ansistring;
i,j,k,n,a,b,c:longint;
begin
assign(input,'a.in');
reset(input);
assign(output,'a.out');
rewrite(output);
readln(n);
readln(st);
a:=(-1) mod 3;
b:=(-2) mod 3;
for k:=1 to n-1 do
begin
c:=b;
b:=a;
a:=k mod 3;
j:=k;
for i:=1 to n-k do
begin
inc(j);
if st[i]=st[j] then
f[i,a]:=f[i+1,c]
else if f[i,b]<f[i+1,b] then
f[i,a]:=f[i,b]+1
else
f[i,a]:=f[i+1,b]+1;
end;
end;
writeln(f[1,a]);
close(input);
close(output);
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: