| ||||||||||
| 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 | |||||||||
时间竟然高达313MS才AC,如何优化?const
MAXN = 100;
type
statetype = record
com,cnt : longint;
end;
var
M,N,size,upperlim,i,j,k,l,fl0,fl1,ans,tmp,newer : longint;
state : array[1..1 shl 10] of statetype;
dp : array[0..1,1..1 shl 10,1..1 shl 10] of longint;
map : array[-1..MAXN] of longint;
ch : char;
procedure DFS(now,curr,cnt : longint);
var lowbit : longint;
begin
repeat
if now = 0 then begin
inc(size);
state[size].com := curr; state[size].cnt := cnt;
exit;
end;
lowbit := now and -now;
DFS((now xor lowbit) and not (lowbit shl 1) and not (lowbit shl 2),curr or lowbit,cnt+1);
now := now xor lowbit;
until false;
end;
begin
// assign(input,'cannon.in'); reset(input);
// assign(output,'cannon.out'); rewrite(output);
readln(N,M);
for i := 1 to N do begin
for j := 0 to M-1 do begin
read(ch);
if ch = 'H' then map[i] := map[i] or (1 shl j);
end;
readln;
end;
upperlim := (1 shl M)-1; map[-1] := 0; map[0] := 0;
size := 0; DFS(upperlim,0,0);
filldword(dp[0],size,-1);
dp[0][size][size] := 0;
for i := 1 to N do begin
fl1 := i and 1; fl0 := fl1 xor 1;
filldword(dp[fl1],size,-1);
for j := 1 to size do
if state[j].com and map[i-2] = 0 then
for k := 1 to size do
if (state[k].com and map[i-1] = 0) and (state[j].com and state[k].com = 0) and (dp[fl0,j,k] <> -1) then begin
tmp := state[j].com or state[k].com;
for l := 1 to size do
if (state[l].com and map[i] = 0) and (state[l].com and tmp = 0) then begin
newer := dp[fl0,j,k]+state[l].cnt;
if newer > dp[fl1,k,l] then dp[fl1,k,l] := newer;
end;
end;
end;
fl1 := N and 1; ans := 0;
for i := 1 to size do
if state[i].com and map[N-1] = 0 then
for j := 1 to size do
if state[j].com and map[N] = 0 then
if (state[i].com and state[j].com = 0) and (dp[fl1,i,j] > ans) then ans := dp[fl1,i,j];
writeln(ans);
close(input); close(output);
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator