加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

一类dp的网格模型

发布时间:2020-12-14 05:16:38 所属栏目:大数据 来源:网络整理
导读:关于形如 (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} binom{a_i+b_i+a_j+b_j}{a_i+a_j}) ,其中

关于形如(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} binom{a_i+b_i+a_j+b_j}{a_i+a_j}),其中(a,bleq 4000,nleq 10^6)

(binom{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,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))的方案数。
这是经典问题,答案为 (binom{i+n-j}{i} - binom{i+n-j}{i+1})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读