比赛 HAOI2009 模拟试题3 评测结果 AAAAAAAAAA
题目名称 诸侯安置 最终得分 100
用户昵称 ceeji 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2009-04-23 11:17:08
显示代码纯文本
  1. var i,j,k,n,l,s:longint;
  2. f:array[1..200,1..200] of longint;
  3. function make(p:longint):longint;
  4. begin
  5. if odd(p) then make:=p else make:=p-1;
  6. end;
  7. begin
  8. assign(input,'empire.in');reset(input);
  9. assign(output,'empire.out');rewrite(output);
  10. readln(n,k);
  11. if k=0 then begin writeln(1);close(output);halt
  12. end;
  13. if k>=2*n-1 then begin writeln(0);
  14. close(output);halt;
  15. end;
  16. for i:=1 to 2*n-1 do
  17. if odd(i) then f[i,1]:=i else f[i,1]:=i-1;
  18. for i:=1 to 2*n-1 do
  19. for j:=2 to i do
  20. for l:=1 to i-j+1 do
  21. f[i,j]:=(f[i,j]+f[i-l,j-1]*(make(i)-j+1)) mod 504;
  22. i:=2*n-1;
  23. if k=1 then begin writeln((i*(i+1) div 2-i div 2) mod 504);
  24. close(output);halt end else
  25. for i:=k to 2*n-1 do inc(s,f[i,k]);
  26. writeln(s mod 504);
  27. close(input);
  28. close(output);
  29. end.