ac1276.pas

来自「Ural(Acm.timus.ru)题解 By Maigo大牛」· PAS 代码 · 共 36 行

PAS
36
字号
program ural1276;
const
  maxn=40;
var
  dp:array[boolean,-1..maxn,-1..maxn,-1..maxn,'A'..'B']of int64;
  loco,s:string[2];
  n,m,aa,ab,ba,bb,i,j,k,l:byte;
  ans:int64;
begin
  readln(n,m);
  readln(loco);
  for i:=1 to n do begin
    readln(s);
    if s='AA' then inc(aa) else if s='AB' then inc(ab) else if s='BA' then inc(ba) else inc(bb);
  end;

  dp[false,0,0,0,loco[2]]:=1;
  for i:=0 to aa do
    for j:=0 to ab do
      for k:=0 to ba do
        for l:=0 to bb do begin
          if i+j+k+l=0 then continue;
          dp[odd(i),j,k,l,'A']:=dp[not odd(i),j,k,l,'A']+dp[odd(i),j,k-1,l,'B'];
          dp[odd(i),j,k,l,'B']:=dp[odd(i),j-1,k,l,'A']+dp[odd(i),j,k,l-1,'B'];
          if i+j+k+l=m then
            inc(ans,dp[odd(i),j,k,l,loco[1]]);
        end;

  if ans=0 then
    writeln('NO')
  else begin
    writeln('YES');
    writeln(ans);
  end;
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?