2024.7.28 闲话

歌:またおいで - さうざんど feat. 可不 .

点击输入文字

一个仅含 \(\texttt{( ) ?}\) 的字符串是好的当且仅当可以把每个 \(\texttt?\) 替换为 \(\texttt(\)\(\texttt)\) 使得最终形成一个匹配的括号串 .

对于固定的 \(n\) 对于每个 \(k\) 计算长为 \(2n\)\(k\)? 的好串个数,对 \(10^9+3579\) 取模 .

将问题看成一个格路计数的问题:从 \((0,0)\) 出发遇到一个 ( 就走 \((1,1)\),遇到一个 ) 就走 \((1,-1)\),遇到一个 ? 可以选择走 \((1,1)\)\((1,-1)\),需要走到 \((n,0)\) 且时刻不进入 \(x\) 轴下方 .

容易发现若决策 ? 后若最终能走到的最低点为 \((n,m_1)\),最高点为 \((n,m_2)\),则最终能到达的点一定形如 \((n,m_1+2i)\),其中 \(i\)\([0,\frac{m_2-m_1}2]\) 间的整数 .

令生成函数:

\[D(x,y,s,t)=\sum_ws^{\operatorname{nondet}(w)}t^{|w|}x^{\min(w)}y^{\max(w)} \]

其中 \(w\) 是任意一个括号串,\(\operatorname{nondet}(w)\)\(w\)? 的个数,\(\operatorname{min}(w),\operatorname{max}(w)\) 分别是决策 ? 后若最终能走到的最低点和最高点的纵坐标 . 则欲求即为 \([s^kt^{2n}]D(0,1,s,t)\) .

首先容易得到方程:

\[\begin{aligned}D(x,y,s,t)=1&+t(x^{-1}y^{-1}+xy+sx^{-1}y)(D(x,y,s,t)-D(0,y,s,t))\\&+t(xy^{-1}+(1+s)xy)(D(0,y,s,t)-D(0,0,s,t))\\&+t(1+t)xyD(0,0,s,t)\end{aligned} \]

\(K(x,y)=xy(1-t(x^{-1}y^{-1}+xy+sy^{-1}x))\),则原式可以简化为:

\[K(x,y)D(x,y,s,t)=xy+t(x^2-1)(sy^2+1)D(0,y,t)-tx^2D(0,0,t) \]

为了求解,考察函数 \(X,Y\) 满足 \(K(1,Y(t))=K(X(y,t),y)=0\)(可以简单解出).

在原式中代入 \(x=1\)

\[K(1,y)D(1,y,s,t)=y-tD(0,0,s,t) \]

此时令 \(y=Y(t)\) 让等号左侧变成 0,即可得出 \(D(0,0,s,t)\) 的值,进而可以知道 \(D(1,y,s,t)\) 的值:

\[D(0,0,s,t)=\dfrac{Y(t)}t\qquad D(1,y,s,t)=\frac{y-Y(t)}{K(1,y)} \]

类似的,可以得到 \(D(0,y,s,t)\) 的封闭形式,进而可以组合出 \(D\) 的封闭形式:

\[D(x,y,s,t)=\dfrac{(x-X(y,t))(y-xY(t)-X(y,t)Y(t)+xyX(y,t))}{(1-X(y,t^2))K(x,y)} \]

代入 \(x=0,y=1\) 并仔细地展开整理可以得到答案的生成函数:

后面看 joke3579 的吧(

posted @ 2024-07-28 12:45  Jijidawang  阅读(169)  评论(3编辑  收藏  举报
😅​