QOJ.ac

QOJ

时间限制: 1.0 s 内存限制: 256 MB 总分: 100 可 Hack ✓

#12116. 不穩定的城鎮

统计

BTtown 由 $n$ 間房屋組成,編號為 $1$ 到 $n$。房屋位置由排列 $p_1, \dots, p_n$ 描述:房屋 $i$ 與 $p_i$ 被視為鄰居。若 $p_i = i$,則表示第 $i$ 間房屋沒有鄰居。

由於城市中央發電廠的技術問題,市政府被迫逐一切斷房屋的電力供應。假設切斷順序由排列 $q_1, \dots, q_n$ 描述。最初,每間房屋都連接到電網。在第 $i$ 天,編號為 $q_i$ 的房屋會被切斷與電網的連接。

為了緩解這種情況,市民必須幫助有需要的鄰居:仍然連接到電網的房屋居民,需要鋪設電纜連接到已被切斷電網的鄰居房屋。值得注意的是,這並不會使鄰居房屋重新連接回電網。

在任何時間點,以下規則成立: 當且僅當兩間房屋互為鄰居,且其中一間連接到電網、另一間未連接到電網時,兩者之間會有一條電纜。 因此,如果兩間房屋都已從電網切斷,則原本可能存在於兩者之間的電纜會被移除。

在每一天結束時,城市會被劃分為由市民鋪設的電纜所連接的房屋群組。為了分析電網的穩定性,追蹤這些群組的數量非常重要。切斷順序 $q$ 的「不穩定度」(instability)定義為 $n$ 天中每天群組數量的總和。

市政府尚未決定切斷順序 $q$,現在需要計算所有可能順序下的不穩定度總和。請協助城市計算該數值對 $10^9 + 7$ 取模後的結果。

輸入格式

第一行包含一個整數 $n$ ($1 \le n \le 10^6$)。 第二行包含 $n$ 個以空格分隔的整數 $p_1, \dots, p_n$ ($1 \le p_i \le n, p_i \neq p_j$ 若 $i \neq j$)。

輸出格式

輸出一個整數,代表所有可能切斷順序的不穩定度總和除以 $10^9 + 7$ 的餘數。

子任務

本題包含 7 個子任務,滿足以下要求:

  1. $n \le 8$。配分 8 分。
  2. $n \le 18$。配分 10 分。
  3. $n \le 30$。配分 13 分。
  4. $n \le 2000$。配分 22 分。
  5. $n \le 100000, p_i = n - i + 1$。配分 16 分。
  6. $n \le 100000$。配分 12 分。
  7. 原始問題限制。配分 19 分。

範例

範例 1

輸入

2
2 1

輸出

6

範例 2

輸入

4
3 4 2 1

輸出

232

說明

讓我們考慮第二個範例,切斷順序為 $q = [4, 3, 2, 1]$。最初,所有房屋都連接到電網。

  1. 第一天,第 4 間房屋被切斷。房屋 1 和 2 的居民會發現他們的鄰居沒有電力,因此會鋪設電纜。因此,房屋 1、2、4 形成一個由市民鋪設電纜連接的群組。同時,第 3 間房屋被視為一個獨立的群組。群組數量為 2。
  2. 第二天,第 3 間房屋被切斷。房屋 1 和 2 的居民會再次鋪設電纜。所有 4 間房屋都將透過電纜連接。群組數量為 1。
  3. 第三天,第 2 間房屋被切斷。結果,先前連接到第 2 間房屋的兩條電纜都被移除。現在有兩個群組 — $[1, 3, 4]$ 和 $[2]$。群組數量為 2。
  4. 最後,第 1 間房屋被切斷。連接到第 1 間房屋的兩條電纜都被移除,每間房屋都形成一個獨立的群組。群組數量為 4。

因此,順序 $q = [4, 3, 2, 1]$ 的不穩定度為 $2+1+2+4=9$。

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.