歌:またおいで - さうざんど feat. 可不 .
点击输入文字
一个仅含 ( ) ? 的字符串是好的当且仅当可以把每个 ? 替换为 ( 或 ) 使得最终形成一个匹配的括号串 .
对于固定的 n 对于每个 k 计算长为 2n 含 k 个 ? 的好串个数,对 109+3579 取模 .
将问题看成一个格路计数的问题:从 (0,0) 出发遇到一个 ( 就走 (1,1),遇到一个 ) 就走 (1,−1),遇到一个 ? 可以选择走 (1,1) 或 (1,−1),需要走到 (n,0) 且时刻不进入 x 轴下方 .
容易发现若决策 ? 后若最终能走到的最低点为 (n,m1)、最高点为 (n,m2),则最终能到达的点一定形如 (n,m1+2i),其中 i 是 [0,m2−m12] 间的整数 .
令生成函数:
D(x,y,s,t)=∑wsnondet(w)t|w|xmin(w)ymax(w)
其中 w 是任意一个括号串,nondet(w) 是 w 中 ? 的个数,min(w),max(w) 分别是决策 ? 后若最终能走到的最低点和最高点的纵坐标 . 则欲求即为 [skt2n]D(0,1,s,t) .
首先容易得到方程:
D(x,y,s,t)=1+t(x−1y−1+xy+sx−1y)(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)
令 K(x,y)=xy(1−t(x−1y−1+xy+sy−1x)),则原式可以简化为:
K(x,y)D(x,y,s,t)=xy+t(x2−1)(sy2+1)D(0,y,t)−tx2D(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)=Y(t)tD(1,y,s,t)=y−Y(t)K(1,y)
类似的,可以得到 D(0,y,s,t) 的封闭形式,进而可以组合出 D 的封闭形式:
D(x,y,s,t)=(x−X(y,t))(y−xY(t)−X(y,t)Y(t)+xyX(y,t))(1−X(y,t2))K(x,y)
代入 x=0,y=1 并仔细地展开整理可以得到答案的生成函数:
后面看 joke3579 的吧(
图

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-07-28 魔怔愉悦之 Vizing 定理