CF1391C.Cyclic Permutations

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

A permutation of length nn is an array consisting of nn distinct integers from 11 to nn in arbitrary order. For example, [2,3,1,5,4][2,3,1,5,4] is a permutation, but [1,2,2][1,2,2] is not a permutation (22 appears twice in the array) and [1,3,4][1,3,4] is also not a permutation (n=3n=3 but there is 44 in the array).

Consider a permutation pp of length nn, we build a graph of size nn using it as follows:

  • For every 1≤i≤n1 \leq i \leq n, find the largest jj such that 1≤j<i1 \leq j \lt i and pj>pip_j \gt p_i, and add an undirected edge between node ii and node jj
  • For every 1≤i≤n1 \leq i \leq n, find the smallest jj such that i<j≤ni \lt j \leq n and pj>pip_j \gt p_i, and add an undirected edge between node ii and node jj

In cases where no such jj exists, we make no edges. Also, note that we make edges between the corresponding indices, not the values at those indices.

For clarity, consider as an example n=4n = 4, and p=[3,1,4,2]p = [3,1,4,2]; here, the edges of the graph are (1,3),(2,1),(2,3),(4,3)(1,3),(2,1),(2,3),(4,3).

A permutation pp is cyclic if the graph built using pp has at least one simple cycle.

Given nn, find the number of cyclic permutations of length nn. Since the number may be very large, output it modulo 109+710^9+7.

Please refer to the Notes section for the formal definition of a simple cycle

长度为 nn 的排列是指由 11 到 nn 中互不相同的 nn 个整数按任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(数字 22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(此时 n=3n=3,但数组中出现了 44)。

考虑一个长度为 nn 的排列 pp,我们据此构造一个含 nn 个节点的图,规则如下:

  • 对每个 1≤i≤n1 \leq i \leq n,找出最大的 jj 满足 1≤j<i1 \leq j < i 且 pj>pip_j > p_i,并在节点 ii 与节点 jj 之间添加一条无向边;
  • 对每个 1≤i≤n1 \leq i \leq n,找出最小的 jj 满足 i<j≤ni < j \leq n 且 pj>pip_j > p_i,并在节点 ii 与节点 jj 之间添加一条无向边。

若不存在满足条件的 jj,则不添加边。注意:所添加的边连接的是下标(即位置)对应的节点,而非这些位置上的数值。

为便于理解,以 n=4n = 4、p=[3,1,4,2]p = [3,1,4,2] 为例,该图的边集为 (1,3), (2,1), (2,3), (4,3)(1,3),\,(2,1),\,(2,3),\,(4,3)。

若用排列 pp 构造出的图中至少包含一个简单环,则称该排列 pp 是环状的(cyclic)。

给定 nn,求长度为 nn 的环状排列的个数。由于答案可能非常大,请输出其对 109+710^9+7 取模的结果。

有关简单环的严格定义,请参见“注释”(Notes)部分。

输入格式

The first and only line contains a single integer nn (3≤n≤1063 \le n \le 10^6).

第一行且唯一一行包含一个整数 nn(3≤n≤1063 \le n \le 10^6)。

输出格式

Output a single integer 0≤x<109+70 \leq x \lt 10^9+7, the number of cyclic permutations of length nn modulo 109+710^9+7.

输出一个整数 0≤x<109+70 \leq x \lt 10^9+7,表示长度为 nn 的循环排列的个数对 109+710^9+7 取模的结果。

输入输出样例

  • 输入#1

    4

    输出#1

    16
  • 输入#2

    583291

    输出#2

    135712853

说明/提示

There are 1616 cyclic permutations for n=4n = 4. [4,2,1,3][4,2,1,3] is one such permutation, having a cycle of length four: 4→3→2→1→44 \rightarrow 3 \rightarrow 2 \rightarrow 1 \rightarrow 4.

Nodes v1v_1, v2v_2, …\ldots, vkv_k form a simple cycle if the following conditions hold:

  • k≥3k \geq 3.
  • vi≠vjv_i \neq v_j for any pair of indices ii and jj. (1≤i<j≤k1 \leq i \lt j \leq k)
  • viv_i and vi+1v_{i+1} share an edge for all ii (1≤i<k1 \leq i \lt k), and v1v_1 and vkv_k share an edge.

当 n=4n = 4 时,共有 1616 个循环排列。[4,2,1,3][4,2,1,3] 就是其中之一,它包含一个长度为四的环:4→3→2→1→44 \rightarrow 3 \rightarrow 2 \rightarrow 1 \rightarrow 4。

节点 v1v_1、v2v_2、…\ldots、vkv_k 构成一个简单环,当且仅当满足以下条件:

  • k≥3k \geq 3;
  • 对任意下标对 ii 和 jj(其中 1≤i<j≤k1 \leq i \lt j \leq k),均有 vi≠vjv_i \neq v_j;
  • 对所有 ii(其中 1≤i<k1 \leq i \lt k),viv_i 与 vi+1v_{i+1} 相邻(即二者之间存在一条边),且 v1v_1 与 vkv_k 相邻。

输入解题思路,AI测评打分。不知道怎么写?

首页