題意
略。
題解
我們暫且先忽略掉所有<
。
考慮將>
看做一個限制“1”,要求的就是111...111
。
那么,容斥一下,就是:
111...111
= 111...11?
- 111...110
= 111...11?
- 111...1?0
+ 111...100
= ...
= 111...11?
- 111...1?0
+ 111...?00
- ...
考慮類似111?000
這種怎么求?
設\(dp_i\)表示考慮前\(i\)個>
之前的所有符號(包括<
),滿足的序列的種類數。
則
轉移方程:
\[dp_i = [s_i = '>'] \sum_{j < i} [s_j = '>'] {(-1)} ^ {cnt_i - cnt_j - 1} * \binom{i}{i - j} * dp_j \]
其中\(cnt_i\)代表的是第\(i\)位置之前有多少個>
,組合數代表取出\(i\)個數的\(i - j\)個放在問號后面的位置上,由於問號前后序列都是單調的,但是對兩個序列交界處沒有要求,所以方案數就是一個組合數。
把式子變形一下,就是
\[\frac{dp_i}{i!} = [s_i = '>'] \sum_{j < i} [s_j = '>'] \frac{dp_j}{j!} * {(-1)} ^ {cnt_i - cnt_j - 1} * \frac{1}{(i - j)!} \]
做分治ntt即可。
代碼he的,不好意思貼了。