AGC 054 (A~E) 題解
A
- 若\(s_0\neq s_1\)則,答案為\(1\)。
- 若存在\(i\),滿足\(s_i\neq s_0\and s_{i+1}\neq s_0\),則答案為\(2\)。
- 否則答案為\(3\)。
B
首先一個合法分組和一個排列有着一一對應關系,所以只需要統計有多少分組。
然后乘上兩邊數量的階乘即可。
C
首先考慮如何操作數最小。
一定是任意選擇一個位置其中有\(>k\)個在他前面比他大的數。
然后將他往前移動,直到恰好有\(k\)個比他大的在他前面。
可以發現這樣的排列是確定的。
dp的時候只需要從前往后dp,考慮把前面的數往后帶。
其中一個數能往后帶的條件是1. 恰好有\(k\)個比他大的在前面 2. 后面一個比他大。
然后往后帶的數會放到一些不往后帶的數的后面。
時間復雜度為\(O(N^2)\)。
D
首先\(o,x\)之間的相對位置不變。
\(()\)一定是按照最優匹配(與\(ox\)無關)。
所以可以考慮\(dp\),轉移的貢獻為逆序對數。
E
假設\(a_1<a_n\)
一個數列是好的,當且僅當存在一個位置\(i\),滿足\(a_i\leq a_1\and a_{i+1}\geq a_n\)。
證明:
考慮倒着歸納,首先初始一定是\(x,y(x<y)\),滿足條件。
對於一個滿足條件的序列如果插入元素的位置\(\leq i\or > i+1\)則不影響,否則在\(i,i+1\)中間一定任然滿足條件。
考慮不滿足上述條件的序列個數。
可以把數從小到大填。
設結尾是\(A+k\),假設\(k\geq 2\)。
-
填入\(A+1...A+k-1\),有\((k-1)!\)個方案。
-
填入\(1...A-1\),有\(\frac{(A+k-3)!}{(k-2)!}\)個方案。
-
填入\(A+k+1...N\),其中不能在某一個\([1...A]\)的右邊,有\(\frac{(N-A-2)!}{(k-2)!}\)
總共\((A+k-3)!(N-A-2)!(k-1)/(k-2)!\)
答案即為\(\sum_{2\leq k\leq N-A} (A+k-3)!(N-A-2)!(k-1)/(k-2)!=(N-A-2)!\sum_{2\leq k\leq N-A}(A+k-3)!(k-1)/(k-2)!\)。
其中\(\sum_{0\leq k\leq B} {A+k\choose k}\)是一個經典問題。
他的封閉形式如下:
可以這樣理解\(\sum_{k\leq B} {A+k\choose A}\)為組合數矩陣的\(A\)到\(A+B\)行的第\(A\)列的和。
由於\((x,y)+(x+1,y)=(x+1,y+1)\)。
所以最終恰好就是上面的值。