#59718. 传递
传递
暂无测试数据。
在蒜国,快递路线被抽象成了一条直线。我们在这里选择一个区间 $[1,n]$,表示有 $n$ 个城市,每个城市以 $1\sim n$ 中的一个数作为编号,按编号从小到大坐落在这条直线上。
这 $n$ 个城市的快递仓都装满了货物,所以货物交换只能发生在相邻两个城市之间(比如,第 $2$ 个城市只能和第 $1$ 个和第 $3$ 个城市直接交换)。交换的代价为两个城市货物的重量的和的平方,即若质量分别为 $a,b$,那么代价就为 $(a + b)^2$。
每一个城市的快递仓的货物都会发往另外一个城市(可能是自己),但不会有两个城市的货物目的地相同。
为了节约成本,请你输出所有城市的货物都发往需要到达的城市的最小总代价,答案对 $10^9 + 7$ 取模。(指最小的答案对于 $10^9 + 7$ 取模,并不是模意义下的最小值)
输入格式
第一行,输入一个正整数 $n$。
第二行,输入 $n$ 个以空格隔开的整数 $w_i$,表示第 $i$ 个城市的货物质量为 $w_i$。
第三行,输入 $n$ 个以空格隔开的正整数 $p_i$,表示第 $i$ 个城市的货物要发往城市 $p_i$。
数据满足 $p_i$ 为 $1\sim n$ 的一个排列,即两两互不相同。
输出格式
输出共一行,一个整数,表示所有货物都发往自己想要到达的城市的最小代价,答案对 $10^9 + 7$ 取模。
数据范围
对于 $20\%$ 的数据,$1\leq n \leq 100, 1 \leq w_i \leq 100$;
对于另外 $20\%$ 的数据,$1\leq n \leq 2000, 1 \leq w_i \leq 1000$;
对于另外 $20\%$ 的数据,$1\leq n \leq 10^5, 1 \leq w_i \leq 10^5,\{\forall i \in[1,n-1],p_i = i + 1, p_n = 1\}$;
对于 $100\%$ 的数据,$1\leq n \leq 5 \times 10^5, 1 \leq w_i \leq 10^6$;
5
5 5 4 7 6
1 2 4 3 5
121
5
5 5 4 7 6
2 3 4 5 1
511