Pro Tanto Quid Retribuamus.|

Schucking_Sattin

园龄:2年11个月粉丝:13关注:28

2024-02-27 21:34阅读: 12评论: 0推荐: 1

Yet Another Two Pieces Problem

Yet Another Two Pieces Problem

Problem

你在原点 (0,0),你可以进行以下三种操作:

  • 花费 1 的代价,向上移动一单位长度。
  • 花费 k 的代价,向右移动 k 单位长度,需要保证不经过 y=x。其中 k 属于给定的整数集合 S
  • 花费 1 的代价,使得横坐标与纵坐标相等。

求花费 s 的代价移动到 (n,m) 的方案数(nm)。

Solution

称经过 y=x 的点为关键点,我们总是把路径拆成从一个关键点出发直到碰到终点或碰到下一个关键点的若干条路径,更细致地说,记 G 表示从 (0,0)(n,m) 且不经过 y=x 的路径,o 表示一次操作 3,则路径一定形如 GoGoGoGoG

先考虑计算形如 G 的路径,它也可以进行拆分。记 P 表示形如 (0,0)(n,n) 的一条路径,其可以经过 y=x,不能使用操作 3;记 表示一次操作 1。则 G 一定形如:PPP

P(x) 满足其 [xn] 表示 (0,0)(n,n) 的方案数,枚举最后一步选取 kS(显然最后一步只能是操作 2):

P(x)=1+kSxkPk+1(x)

G(u,v) 满足其 [unvm] 表示 (0,0)(n,m) 且不经过 y=x 的方案数。

考察一次 (0,0)(0,1)(n,n+1)Pnpnunvn×v=vP(uv)。组合起来即为:

G(u,v)=11vP(uv)

F(u,v,w) 满足其 [unvmws] 表示花费 s 代价从 (0,0)(n,m) 的方案数,其实就是答案。

考察一次 (0,0)(a,b)Ga,bga,buavbwa+b=G(uw,vw)

考察一次 (0,0)(a,b)(b,b)Goa,bga,bubvbwa+b+1=wG(w,uvw)。组合起来即为:

F(u,v,w)=G(uw,vw)1wG(w,uvw)

uv=xv=y

 [unvmws]F(u,v,w)=[xnymnws]F(xy,y)=[xnymnws]G(xwy,yw)1wG(w,xw)=[xnymnws]11wG(w,xw)11ywP(xw2)=[xnws](wP(xw2))mn11w1xwP(xw2)=[xnws](wP(xw2))mn1xwP(xw2)1wxwP(xw2)=[xnws](wP(xw2))mn1xwP(xw2)1wxwP(xw2)=[xnws](wP(xw2))mn1xwP(xw2)(1w)(1xwP(xw2)1w)=[xnws](wP(xw2))mn1xwP(xw2)1wj0(xwP(xw2)1w)j=[xnws]j0xj(wP(xw2))mn+j(1(1w)j+1[j>0]1(1w)j)

到这里卡了。从数学直觉上看,接下来想干的事情是把 x,w 分离,但仅用 P 表示似乎无法做到这一点。

Q(x)=xP(x)P(x)=Q(x)x,代入上式继续推:

LHS=[xnws]j0xj(Q(xw2)xw)mn+j(1(1w)j+1[j>0]1(1w)j)=[xnws]j0xnmwnmj(Q(xw2))mn+j(1(1w)j+1[j>0]1(1w)j)=j0[xmwsn+m+j](Q(xw2))mn+j(1(1w)j+1[j>0]1(1w)j)=j0([xm]Q(x)mn+j)([wsn+m+j]w2mw+[j=0](1w)(1w)j+1)=j0([xm]Q(x)mn+j)([wsnm+j]w+[j=0](1w)(1w)j+1)=[n+m=s][xm]Q(x)mn+j0([xm]Q(x)mn+j)([wsnm+j1]1(1w)j+1)=[n+m=s][xm]Q(x)mn+j0([xm]Q(x)mn+j)(snm+2j1j)

目的很明确了:求出所有 [xm]Q(x)k,而这是拉格朗日反演能解决的形式。

根据 P(x)=1+kSxkP(x)k+1,有 Q(x)=x+kSQ(x)k+1,太优美了!我们可以轻松得到 Q(x) 的复合逆为:

Q<1>(x)=xkSxk+1

使用拉格朗日反演:

 [xm]Q(x)k=km[xk](Q<1>(x))m=km[xk](xkSxk+1)m=km[xmk](1kSxk)m

设:

f(x)=(1kSxk)m

求导:

(1kSxk)mf(x)=1f(x)(1kSxk)m+f(x)×m(1kSxk)m1(kSkxk1)=0f(x)(1kSxk)=mf(x)kSkxk1ifikS(ik)fik=mkSkf(i1)(k1)fi=1ikS(i+(m1)k)fik

由于 x|Q(x)Q(x)k 系数非零的最低项为 k,因此 mn+jmjn

总时间复杂度为 O(n|S|+s)

本文作者:Schucking-Sattin

本文链接:https://www.cnblogs.com/Schucking-Sattin/p/18038444

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Schucking_Sattin  阅读(12)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示