好久没写过题解了,模了好长时间的题终于过了,由此写篇题解。
题目链接
题意就不详细说明了。
反思
这题模了好长时间主要是因为我中间感觉太难了就去奖励自己了^_^,大家千万不要向我学习。看到这题就应该思考这个序列与它下一个产生的序列有什么关系,存在关系进行排列组合公式推导理清思路就好。
接下来开始分类讨论。
- 第一种情况也就是最简单的情况先考虑由每个单独
n
n
n元排列而产生的
m
m
m元排列,通俗的讲也就是单独的
n
n
n元排列对答案做出的贡献。
p 1 , p 2 , … , p n p_1,p_2,\dots,p_n p1,p2,…,pn中出现的 p 1 , p 2 , … , p m p_1,p_2,\dots,p_m p1,p2,…,pm
做出的贡献为 m ! ∗ ( n − m + 1 ) ! m!*(n-m+1)! m!∗(n−m+1)!
其实很简单也就是将 m m m元排列当成一个整体,这个整体自己进行全排列也就是 m ! m! m!而剩下的元素再加上这个 m m m元排列也就是 ( n − m + 1 ) (n-m+1) (n−m+1)个元素这些元素随意排列的方案数也就是 ( n − m + 1 ) ! (n-m+1)! (n−m+1)!,两种方式分步进行也就是 m ! ∗ ( n − m + 1 ) ! m!*(n-m+1)! m!∗(n−m+1)!
- 第二种情况比较复杂也很容易想到也就是两个
n
n
n元排列的首尾对答案做出的贡献
下面我们应该分析这个 n n n排列与与下一个 n n n元排列存在这什么恶心关系呢?
最开始是这样一个 n n n元排列 p 1 < p 2 < p 3 < ⋯ < p n p_1<p_2<p_3<\dots<p_n p1<p2<p3<⋯<pn
它最终的形式应该是这样的
p 1 > p 2 > p 3 > ⋯ > p n p_1>p_2>p_3>\dots>p_n p1>p2>p3>⋯>pn
通过打表或者是其他的分析而得(我是打表
在一个 n n n元排列里面存在最后一个 < < <关系的 p k < p k + 1 p_k<p_{k+1} pk<pk+1这个 p k p_k pk要被这个排列从后往前数第一个比它大的数替换然后整体倒着来。
比如一个 n n n元排列是这样的 p 1 < p 2 > p 3 < p 4 < ⋯ < p k < p k + 1 > ⋯ > p j > ⋯ > p n p_1<p_2>p_3<p_4<\dots<p_k<p_{k+1}>\dots>p_j>\dots>p_n p1<p2>p3<p4<⋯<pk<pk+1>⋯>pj>⋯>pn
假设 p j p_j pj是从右往左数第一个比 p k p_k pk大的元素
它的下一个排列必然是
p 1 < p 2 > p 3 < p 4 < ⋯ < p j > p n < p n − 1 < ⋯ < p j + 1 < p k < p j − 1 < ⋯ < p k + 1 p_1<p_2>p_3<p_4<\dots<p_j>p_n<p_{n-1}<\dots<p_{j+1}<p_k<p_{j-1}<\dots<p_{k+1} p1<p2>p3<p4<⋯<pj>pn<pn−1<⋯<pj+1<pk<pj−1<⋯<pk+1
其实这样铁是对的因为你再保留之前得 > > >得基础上一直将 > > >往前移,这个过程什么时候停止呢,那也就是没有 < < <得时候,那也就是排列结束的时候。
那你肯定有个 p i p_i pi为 m m m元排列的起始点
-
- 再进行分类讨论当
i
≤
k
i\leq k
i≤k时
单独讨论这个排列
p i … p k , p k + 1 , p k + 2 , … , p j , … , p n , p 1 , p 2 … p i + m − 1 − n p_i\dots p_k,p_{k+1},p_{k+2},\dots,p_j,\dots,p_n,p_1,p_2\dots p_{i+m−1−n} pi…pk,pk+1,pk+2,…,pj,…,pn,p1,p2…pi+m−1−n
- 再进行分类讨论当
i
≤
k
i\leq k
i≤k时
那也就是将序列分成两段分析 i − n i-n i−n是前一个 n n n元排列所构成的一部分,后面那前 ( m − ( n − i + 1 ) ) (m-(n-i+1)) (m−(n−i+1))项也就是后一个 n n n元排列所构成的首先呢还是除了这 m m m项其他随便排是一个 ( n − m ) ! (n-m)! (n−m)!,本来呢这 m m m项也是随便排但是不要忘了构成这个排列的条件就是存在 p k < p k + 1 > p k + 2 p_k<p_{k+1}>p_{k+2} pk<pk+1>pk+2所以前一部分它不能是单调递增的要减去这个情况那也就是 m ! − C m n − i + 1 ∗ ( ( m − ( n − i + 1 ) ) ! ) m!-C_m^{n-i+1}*((m-(n-i+1))!) m!−Cmn−i+1∗((m−(n−i+1))!)。
-
- 而当 i ≥ ( k + 1 ) i\geq (k+1) i≥(k+1)时
因为 p j > p k p_j>p_k pj>pk是前提条件而且这是 n n n元排列里最小的 m m m个数,所以从逻辑上来看你有 p j p_j pj 必然有 p k p_k pk 但是这又和我们分类讨论的情况不一样所以得出 i + m − 1 − n < j i+m-1-n<j i+m−1−n<j,然后这 m m m 个数随便排也就是 C m n − i + 1 ∗ ( m − ( n − i + 1 ) ) ! C_m^{n-i+1}*(m-(n-i+1))! Cmn−i+1∗(m−(n−i+1))! ,剩下 n − m n-m n−m 随便排也就是 ( n − m ) ! (n-m)! (n−m)!但是要减去一种情况也就是剩下的数全递减的情况违反了找不到这个 k k k 的前提。
讨论完毕。
最后答案化简得
(
m
−
1
)
∗
m
!
∗
(
n
−
m
)
!
−
m
!
∗
∑
i
=
1
m
−
1
1
i
2
(m-1)*m!*(n-m)!-m!*\sum_{i=1}^{m-1}{1\over{i^2}}
(m−1)∗m!∗(n−m)!−m!∗i=1∑m−1i21