• 一类dp的网格模型


    关于形如(f_{i,j} = sum_{t=1}^{|w|}sum_{k=1}^{|v|}f_{i+w_t,j+v_k}),其中(w_t,v_k)为一个定值的(dp)转移。
    可以考虑放到坐标上,画出其转移路线,然后考虑组合意义。

    Section1

    (sum_{i,j} inom{a_i+b_i+a_j+b_j}{a_i+a_j}),其中(a,bleq 4000,nleq 10^6)

    (inom{a_i+b_i+a_j+b_j}{a_i+a_j})等价于从((-a_i,-b_i))走到((a_j,b_j))的方案数。
    建图后直接从左下往右上暴力(dp)出解。

    Section2

    定义一个(n)的排列合法,当且仅当:设(n)的位置为(x),有:

    [p_1<p_2<p_3....<p_{x-1}<p_x>p_{x+1}>....>p_{n-1}>p_n ]

    (m)个限制((pos,v)),形如(p_{pos} = v)
    数据范围:(mleq nleq 10^5),求合法排列数。

    考虑从小往大放,设(f_{i,j})表示放完(1,2...i),左侧放了(j)个。
    转移方程:(f_{i,j} =f_{i-1,j-1} +f_{i-1,j})
    初始在((0,0))每次放一个相当于移动((+1,0))((+1,+1))
    限制相当于限制(f_{v,j})必须通过特定方向到达该点。
    而每一列最多就两个特殊点,直接对特殊点进行(dp),最后一列特殊处理一下即可。

    Section3

    [JLOI2015]骗我呢

    考虑突变的位置,设(f_{i,j})表示做到第(i)行,该行突变位置为(j)
    有:(f_{i,j} = f_{i,j-1} +f_{i-1,j+1}),其中(f_{i,0} = f_{i-1,0})
    画出转移路线,把转移路线拽直可以发现,问题转化为:
    ((0,0))出发,到达((n+m,n)),且不经过(y=x+2)(y=x-(m+1))的方案数u。
    容斥计算。

    Section4

    [NOI2018]冒泡排序

    (f_{i,j})表示还剩下(i)个要放,前面的最大值为(j)的方案数。
    显然当前点要么放比(j)大的数,要么放还没放的数中最下的那个。
    由于我们是逆推所以:(f_{i,j} = f_{i-1,j} + sum_{k=j+1}^{n} f_{i-1,k} = sum_{k=j}^n f_{i-1,k})
    考虑统计答案,枚举在哪个点(i)开始处于自由态。
    由于不会放(a_i),而(a_ileq max_{pre}),所以一定只能放比(max_{pre})大的数。
    此时的方案数为(sum_{k=max_{pre}+1}^n f_{n-i,k} = f_{n-i+1,max_{pre}+1})
    唯一的问题变为如何快速处理(f)
    显然合法的(f_{i,j})需要满足(jge n-i),画出转移路线图,问题转化为:
    ((0,n))出发,不经过(y=-x+(n-1))到达((i,j))的方案数。
    这是经典问题,答案为 (inom{i+n-j}{i} - inom{i+n-j}{i+1})

  • 相关阅读:
    == 和 equals 的区别是什么?
    String 类的常用方法都有那些?
    报表工具对比选型系列—多样性数据源支持度
    报表工具选型对比系列
    报表工具选型对比系列
    web 端怎么实现套打发票、快递单等套打票据功能?
    如何集成一个第三方报表,权限怎么控制
    BI 报表工具如何与 springBoot 框架集成
    在报表中可以使用 ECharts 做图形展现吗?
    Tableau 等常见 BI 工具能集成到 java 项目中吗
  • 原文地址:https://www.cnblogs.com/GuessYCB/p/10228340.html
Copyright © 2020-2023  润新知