gym104077I Square Grid

Grice發表於2024-07-28

題意

題面

做法

考慮這樣一個問題:

給定\(l,r,len,s,t\)\(l\le s,t\le r\)
\(x_0=s,x_{len}=t\)
\(l\le x_i\le r\)
\(|x_i-x_{i-1}|=1\)
計算序列\(x_0,x_1,\cdots,x_{len}\)的方案數

定義1:我們稱不滿足\(l\le x_i\le r\)的位置\(i\)不合法位置

定義2:對於\(x_i<l\)的,我們令其字元為‘L’,對於\(x_i>r\)的,我們令其字元為'R'。將不合法位置的字元順序連線起來,稱其為該序列的不合法字串

定義3:對於字串\(s_1,s_2\),若\(s_1\)\(s_2\)的子序列,稱\(s_1\in_s s_2\)

結論1:考慮\(A=\{L,R,LR,RL,LRL,RLR,\cdots\}\),對於任意長度不為\(0\)的不合法字串\(s\)\(s\)僅包含字元'L'、'R'),均有:

\[\sum_{x\in A,x\in_s s}(-1)^{|x|}=-1 \]

證明略

對於不合法字串存在子序列\(L\)的序列\(\{x_i\}\),即\(\exists i.x_i=l-1\)
令最小滿足\(x_i=l-1\)\(i\)\(\mathbf{i}\),構建序列\(\{y_i\}\)滿足

\[\begin{cases} y_i=2(l-1)-x_i&,0\le i\le \mathbf{i}\\ y_i=x_i&,\mathbf{i}< i\le len \end{cases}\]

結論2:透過上述構建,滿足如下條件的\(\{x_i\}\)\(\{y_i\}\)構成雙射

\[\begin{aligned} \begin{cases} x_0=s,x_{len}=t~~~~ \\ \exists i.x_i=l-1 \\ |x_i-x_{i-1}|=1 \end{cases} \begin{cases} y_0=2(l-1)-s,y_{len}=t\\ |y_i-y_{i-1}|=1 \end{cases} \end{aligned}\]

證明:
令最小的\(i\)滿足\(y_i=l-1\)的為\(\mathbf{i'}\),容易證明\(\mathbf{i'}=\mathbf{i}\),然後可以透過上述構建的逆將\(\{y_i\}\)得到原來的\(\{x_i\}\)

對於存在子序列\(RL\)的序列,即\(\exists i<j.x_i=r+1,x_j=l-1\)
令最小滿足\(x_j=l-1\)且存在\(i<j\)使得\(x_i=r+1\)\(j\)\(\mathbf{j}\),令最小滿足小於\(\mathbf{j}\)\(x_i=r+1\)\(i\)\(\mathbf{i}\),構建序列\(\{y_i\}\)滿足

\[\begin{cases} y_i=2(l-1)-(2(r+1)-x_i)&,0\le i\le \mathbf{i}\\ y_i=2(l-1)-x_i&,\mathbf{i}<i\le \mathbf{j}\\ y_i=x_i&,\mathbf{j}< i\le len \end{cases}\]

結論3:透過上述構建,滿足如下條件的\(\{x_i\}\)\(\{y_i\}\)構成雙射

\[\begin{aligned} \begin{cases} x_0=s,x_{len}=t~~~~ \\ \exists i<j.x_i=r+1,x_j=l-1 \\ |x_i-x_{i-1}|=1 \end{cases} \begin{cases} y_0=2(l-1)-2(r+1)+s,y_{len}=t\\ |y_i-y_{i-1}|=1 \end{cases} \end{aligned}\]

證明:
令最小滿足\(y_j=l-1\)且存在\(i<j\)使得\(y_i=2(l-1)-(r+1)\)\(j\)\(\mathbf{j'}\),令最小滿足小於\(\mathbf{j'}\)\(y_i=2(l-1)-(r+1)\)\(i\)\(\mathbf{i'}\),容易證明\(\mathbf{i'}=\mathbf{i}\)\(\mathbf{j'}=\mathbf{j}\),然後可以透過上述構建的逆將\(\{y_i\}\)得到原來的\(\{x_i\}\)

推廣結論2結論3得到:
結論4(更強的結論)

  1. 對於所有存在子序列\(RLRL...RL\)\(k\)\(RL\))的不合法字串的序列\(\{x_i\}\),滿足如下條件的\(\{y_i\}\)可以與其構成雙射:

\[\begin{cases} y_0=2k(l-1)-2k(r+1)+s,y_{len}=t\\ |y_i-y_{i-1}|=1 \end{cases}\]

  1. 對於所有存在子序列\(LRLR...LR\)\(k\)\(RL\))的不合法字串的序列\(\{x_i\}\),滿足如下條件的\(\{y_i\}\)可以與其構成雙射:

\[\begin{cases} y_0=2k(r+1)-2k(l-1)+s,y_{len}=t\\ |y_i-y_{i-1}|=1 \end{cases}\]

  1. 對於所有存在子序列\(RLRL...RLR\)\(k\)\(RL\)加上一個\(R\))的不合法字串的序列\(\{x_i\}\),滿足如下條件的\(\{y_i\}\)可以與其構成雙射:

\[\begin{cases} y_0=2(k+1)(r+1)-2k(l-1)-s,y_{len}=t\\ |y_i-y_{i-1}|=1 \end{cases}\]

  1. 對於所有存在子序列\(LRL...RLRL\)\(k\)\(LR\)加上一個\(L\))的不合法字串的序列\(\{x_i\}\),滿足如下條件的\(\{y_i\}\)可以與其構成雙射:

\[\begin{cases} y_0=2(k+1)(l-1)-2k(r+1)-s,y_{len}=t\\ |y_i-y_{i-1}|=1 \end{cases}\]

證明與結論2的證明類似

容易發現,1.2.的形式可以表示成\(y_0=2k(r-l+2)+s\)\(k\in \mathbb{Z},k\neq 0\)),3.4.的形式可以表示成\(y_0=2k(r-l+2)+2(r+1)-s\)\(k\in \mathbb{Z}\)

\(f(s,t)\)\(y_0=s,y_{len}=t\)的方案數,
結合結論1結論4,下面的式子對於每種不合法的方案數恰好計算了\(-1\)

\[\sum\limits_{k\in \mathbb{Z},k\neq 0}(-1)^{2k}f(2k(r-l+2)+s,t)+\sum\limits_{k\in \mathbb{Z}}(-1)^{2k+1}f(2k(r-l+2)+2(r+1)+s,t) \]

\(f(2\cdot 0\cdot (r-l+2)+s,t)\)即為在不考慮\(l\le x_i\le r\)條件的方案數,故答案為

\[\begin{aligned} &\sum\limits_{k\in \mathbb{Z}}f(2k(r-l+2)+s,t)-\sum\limits_{k\in \mathbb{Z}}f(2k(r-l+2)+2(r+1)-s,t)\\ &=\sum\limits_{k\in \mathbb{Z}}{len\choose \frac{len+t-s}{2}+k(r-l+2)}-\sum\limits_{k\in \mathbb{Z}}{len\choose \frac{len+t+s+2(r+1)}{2}+k(r-l+2)}\\ \end{aligned} \]

我們知道\(\sum\limits_{k\in \mathbb{Z}}{n\choose t+km}=[x^t](1+x)^n\mod(x^m-1)\)\(0\le t<m\)

故答案即為

\[[x^{\frac{len+t-s}{2}\%(r-l+2)}](1+x)^{len}\mod(x^{r-l+2}-1)\\ -[x^{\frac{len+t+s+2(r+1)}{2}\%(r-l+2)}](1+x)^{len}\mod(x^{r-l+2}-1)\]

考慮這樣一個二維問題(原題很容易轉化為這個問題),

給定\(len,sx,sy,tx,ty\)\(1\le sx,tx\le n,1\le sy,ty\le n\)
\(x_0=sx,y_0=sy\)
\(x_{len}=tx,y_{len}=ty\)
\(1\le x_i\le n\)
\(1\le y_i\le n\)
\(|x_i-x_{i-1}|=1\land y_i=y_{i-1}\)\(x_i=x_{i-1}\land |y_i-y_{i-1}|=1\)
計算序列\((x_0,y_0),(x_1,y_1)\cdots,(x_{len},y_{len})\)的方案數

\[\begin{aligned} &Ans=\\ &\sum\limits_{len_1+len_2=len}\left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)+sx,tx,len_1)-\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)-sx,tx,len_1)\right]\\ &\times\left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)+sy,ty,len_2)-\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)-sy,ty)\right]\\ &=\sum\limits_{len_1+len_2=len}\left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)+sx,tx,len_1)\right]\times \left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)+sy,ty,len_2)\right]\\ &+\sum\limits_{len_1+len_2=len}\left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)-sx,tx,len_1)\right]\times \left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)-sy,ty,len_2)\right]\\ &-\sum\limits_{len_1+len_2=len}\left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)-sx,tx,len_1)\right]\times \left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)+sy,ty,len_2)\right]\\ &-\sum\limits_{len_1+len_2=len}\left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)+sx,tx,len_1)\right]\times \left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)-sy,ty,len_2)\right]\\ \\ \end{aligned} \]

對於\(\sum\limits_{len_1+len_2=len}f(sx,tx,len_1)\times f(sy,ty,len_2)\)的組合意義為從\((sx,sy)\)\(len\)步到達\((tx,ty)\)的方案數

考慮進行座標轉換\((x,y)\rightarrow (x+y,x-y)\),那麼每一步的增量變為\((+1,+1)(+1,-1)(-1,+1)(-1,-1)\)

也就是每一步每一維可以單獨處理,則:

\(\sum\limits_{len_1+len_2=len}f(sx,tx,len_1)\times f(sy,ty,len_2)=f(sx+sy,tx+ty,len)\times f(sx-sy,tx-ty,len)\)

考慮\(Ans\)的第一項如何計算(\(N=2(n+1)\)),另外三項同理

\[\begin{aligned} &\sum\limits_{len_1+len_2=len}\left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)+sx,tx,len_1)\right]\times \left[\sum\limits_{k\in \mathbb{Z}}f(2k(n+1)+sy,ty,len_2)\right]\\ &=\sum\limits_{k_1\in \mathbb{Z},k_2\in \in \mathbb{Z}}f(2(k_1+k_2)(n+1)+sx+sy,tx+ty,len)\times f(2(k_1-k_2)(n+1)+sx-sy,len)\\ &=\left[\sum\limits_{k\in \mathbb{Z}}f(2kN+sx+sy,tx+ty,len)\right]\times \left[\sum\limits_{k\in \mathbb{Z}}f(2kN+sx-sy,len)\right]\\ &+\left[\sum\limits_{k\in \mathbb{Z}}f((2k+1)N+sx+sy,tx+ty,len)\right]\times \left[\sum\limits_{k\in \mathbb{Z}}f((2k+1)N+sx-sy,len)\right]\\ &=\left[[x^{?_1}](1+x)^{len}\mod(x^{2N}-1)\right]\times \left[[x^{?_2}](1+x)^{len}\mod(x^{2N}-1)\right]\\ &+\left[[x^{?_3}](1+x)^{len}\mod(x^{2N}-1)\right]\times \left[[x^{?_4}](1+x)^{len}\mod(x^{2N}-1)\right]\\ \end{aligned}\]

回到原題,可以在\(O(N\log N\log len)\)倍增求出\((1+x)^{len}\mod(x^{2N}-1)\),然後每次\(O(1)\)回答詢問

相關文章