zoukankan      html  css  js  c++  java
  • SDOI 2010 and SXOI 2014 地精部落 (递推)

    用E[i,j]表示共有i个数字,以1..j开头且一开始下降的方案数的总和。则我们有:

    E[i,j]:=E[I,J-1]+E[i-1,i-j]

    我们先来证明上升与下降的方案是一一对应的。

    事实上,若有a1,a2,a3,……,an 为满足要求的一个序列(上升或下降),

    则我们构造新数列,n+1-a1,n+1-a2,n+1-a3,……,n+1-an 这个数列也满足要求(下降或上升)。

    而且这种对应是一一对应的,其正确性是显然的。

    令f[i,j]表示共i个数字,以j开头的下降的方案数

    令g[i,j]表示共i个数字,以j开头的上升的方案数

    则我们有f[i,j]:=g[i,i+1-j](因为它们是一一对应的)。

    所以f[i,j]=g[i-1,j-1]+g[i-1,j-2]+……+g[i-1,1]

                =f[i-1,i-j+1]+f[i-1,i-j+2]+……+f[i-1,i-1]

                =E[i-1,i-1]-E[i-1,i-j]

    于是E[i,j]:=E[i,j-1]+f[i,j]=E[i,j-1]+E[i-1,i-1]-E[i-1,i-j];

    var i,j,n,p,x:longint;
        f:array[0..1,0..4500] of longint;
    begin
    readln(n,p);
    f[1,1]:=1;x:=1;
    for i:=2 to n do
     begin
     x:=1-x;
     for j:=1 to i do
      begin
       f[x,j]:=f[x,j-1]+f[1-x,i-j];
       if f[x,j]>=p then dec(f[x,j],p);
      end;
     end;
    if n=1 then writeln(1)
     else writeln(f[n mod 2,n]*2 mod p);
    end.             

     待修改……

  • 相关阅读:
    mysql分区
    schema设计
    MYSQL索引
    innodb事务锁
    EXTJS4.2——2.Hellow World
    什么是DOM?
    .net制作窗体
    “System.Runtime.InteropServices.COMException”/ 其他信息: ClassFactory 无法供应请求的类 (异常来自 HRESULT:0x80040111
    github下载文档并修改,上传文档
    HTML 介绍标准格式
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/3762224.html
Copyright © 2011-2022 走看看