Codeforces 1312D. Count the Arrays

Posted zxytxdy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 1312D. Count the Arrays相关的知识,希望对你有一定的参考价值。

Codeforces 1312D. Count the Arrays

题意:

计算满足如下要求的序列的数量。

  • 1:序列长度为(n)
  • 2:序列中的元素为1~m。
  • 3:序列中有且仅有一对数字相等。
  • 4:序列有一个分界点,分界点左边的数字严格单调递增,右边的数字严格单调递减。

数据范围:(2leq nleq mleq 2e5)

对结果取(mod 998244353)

思路:

首先特判,就是当(n=2)时,没有满足条件的序列,输出0。

来看一般情况,为了方便理解,我们画一张图。

技术图片

这是一个满足条件的序列,满足图像成山峰型,且仅一对数字相等。

我们可以发现,除了4相等之外,其他数字都是不同的。

所以我们可以转化一下。

技术图片

将其视为一个数字两两不同的递增序列,那满足这样条件的序列有多少种?

我们可以直接从(m)个数字中选(n-1)个出来,一定可以组成这样一个递增序列,所以答案是:
[ C_{m}^{n-1} ]
但是还有许多情况漏解,比如说我原序列有两个(1),得到的递增序列也是如上图所示。

那么我们就会发现,除了最大的数字之外,所有的数字都可以裂化为两个放到最大数字的右边,所以此时我们要对答案乘上(n-2)。如图所示:

技术图片

上图表示我们把一个5送到右边去。(1,2,4,5,6)都可以送到右边去。

此时还是会漏解,我们尝试把除了(5)之外的左边的数字移动到右边,那么有多少种方案?

首先在这(n-2)个数字当中,5不能右移过去,那也就是剩下(n-3)个数字,那么此时枚举往右放多少个数字,放(0,1,2,3,...,n-3)都是可以的,所以我们要对答案乘上:
[ C_{n-3}^0+C_{n-3}^1+C_{n-3}^2+...+C_{n-3}^{n-3}=2^{n-3} ]
综上所述,答案为:
[ C_m^{n-1} imes (n-2) imes 2^{n-3} ]
code

以上是关于Codeforces 1312D. Count the Arrays的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces1312D Count the Arrays 组合数学

CF 1312D. Count the Arrays

CF1312D Count the Arrays

CF-Educational Codeforces Round 83-D-Count the Arrays

codeforces 1312E

Codeforces 258D Count Good Substrings