QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 256 MB Points totaux : 100

#10626. 侏儒派对 2

Statistiques

它们又来了!小矮人们在上次聚会后又举办了一场余兴派对。这次依然有 $n$ 个小矮人,每个人都得到了一顶尖顶帽子(共有 $n$ 顶高度各不相同的帽子,高度从 $1$ 到 $n$)。他们依然坐在长桌的一侧用餐。

当地的画家又要将这次聚会画下来,因此他询问了每个小矮人关于帽子高度的信息。然而,这次小矮人们记得更少了,每个人只能说出他左边的邻居、右边的邻居或者他自己的帽子高度。

请帮助画家编写一个程序,根据小矮人们的陈述,计算出可能的帽子排列方案数。结果对 $10^9 + 7$ 取模。如果小矮人们记错了,导致提供的信息相互矛盾,则正确结果为 $0$。

输入格式

第一行包含一个整数 $n$ ($n \ge 2$),表示小矮人的数量。

第二行包含一个由 $n$ 个整数组成的序列 $h_1, h_2, \dots, h_n$ ($1 \le h_i \le n$);数字 $h_i$ 表示第 $i$ 个小矮人(从桌子左端开始计数)告诉画家:“我或者我身边的邻居戴着高度为 $h_i$ 的帽子”。

输出格式

输出一行,包含一个整数,表示符合小矮人陈述的帽子排列方案数。结果需对 $10^9 + 7$ 取模。

样例

样例输入 1

4
2 4 2 1

样例输出 1

3

说明

第一个和第三个小矮人记得帽子高度为 $2$,因此这顶帽子一定是第二个小矮人的。如果第四个小矮人记得的是他邻居(即第三个小矮人)的帽子,那么第二个小矮人一定记得的是第一个小矮人的帽子,因此帽子顺序为 $4\ 2\ 1\ 3$。

如果第四个小矮人记得的是他自己的帽子高度,那么有两种可能:$4\ 2\ 3\ 1$ 或 $3\ 2\ 4\ 1$。

子任务

测试集分为以下子任务。每个子任务的测试由一组或多组独立的测试用例组成。

子任务 条件 分值
1 $n \le 10$ 12
2 $n \le 20$ 30
3 $n \le 1000$ 30
4 $n \le 100\,000$ 28

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.