博主更新博客的日常
这一题是一道组合数学+dp题,我没有在考场做出,也没有在考后想出来。主要是因为我的思想没有打开,不敢fix the last number which was added.我一直考虑的都是如何添加最后一个字母的问题。
我认为这道题的关键是通过某些n个数所组成的问题都可以看做1 2 3 …n所组成的问题这条规律来得出本题的结果。
这道题我认为题解的做法很好理解。首先设f[i]为放到第i个数且第i个数放在最后不合法(即得不到最大值)的方案数的数量。这个问题分成两种情况,一种是第i-1个数放在i-k的前面,可以贡献的答案是(i-k-1)*(i-2)!,具体意思是这个数可以放的位置有i-k-1个,确定了这两个数以后其他数随便放(i-2)!都可以;第二种情况是第i-1个数放在i-k的后面,(或者是i-k的那个位置)可以贡献的答案是
∑i−1j=i−kf[j]×(i−j−1)!∗Cj−1i−2
,化简的话就是
(i−2)!×∑i−1j=i−kf[j]/(j−1)!
,显然后面求和的部分可以用部分和解决。
最后就是统计答案了。根据上面的那条规律,设最后一个数放在第i个位置,那么第i+1个位置以后的位置怎么放都可以了。所以就是
∑ni=1f[i]×Pn−in−1
。
不会肉搏的Archer都不是好Archer,没错就是指你吉尔伽美什。
codeforce#445 div.1 C
最新推荐文章于 2024-05-04 16:55:46 发布