308876: CF1588F. Jumping Through the Array
Memory Limit:512 MB
Time Limit:8 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Jumping Through the Array
题意翻译
你有个长度为 $n$ 的数组 $a$ 和一个长度为 $n$ 的排列 $p$,对于每一个 $i$ 有一有向边 $(i,p_i)$。 有如下三种操作: - ```1 l r``` 询问 $\sum_{i=l}^r a_i$。 - ```2 v x``` 将所有 $v$ 能到达的节点所对应编号的值加 $x$。 - ```3 x y``` 交换 $p_x$ 与 $p_y$。 对于每一 $1$ 操作输出结果。题目描述
You are given an array of integers $ a $ of size $ n $ and a permutation $ p $ of size $ n $ . There are $ q $ queries of three types coming to you: 1. For given numbers $ l $ and $ r $ , calculate the sum in array $ a $ on the segment from $ l $ to $ r $ : $ \sum\limits_{i=l}^{r} a_i $ . 2. You are given two numbers $ v $ and $ x $ . Let's build a directed graph from the permutation $ p $ : it has $ n $ vertices and $ n $ edges $ i \to p_i $ . Let $ C $ be the set of vertices that are reachable from $ v $ in this graph. You should add $ x $ to all $ a_u $ such that $ u $ is in $ C $ . 3. You are given indices $ i $ and $ j $ . You should swap $ p_i $ and $ p_j $ . ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1588F/c75b348236facf766d3f0077e9eb5a499895bb8c.png)The graph corresponding to the permutation $ [2, 3, 1, 5, 4] $ .Please, process all queries and print answers to queries of type $ 1 $ .输入输出格式
输入格式
The first line contains a single integer $ n $ ( $ 1 \le n \le 2 \cdot 10^5 $ ) — the size of the array and permutation. The second line contains $ n $ integers $ a_1, a_2, \ldots, a_n $ ( $ -10^8 \le a_i \le 10^8 $ ). The third line contains $ n $ distinct integers $ p_1, p_2, \ldots, p_n $ ( $ 1 \le p_i \le n $ ). The fourth line contains a single integer $ q $ — the number of queries ( $ 1 \le q \le 2 \cdot 10^5 $ ). Next $ q $ lines contain description of queries. The $ i $ -th of them starts with an integer $ t_i $ ( $ 1 \le t_i \le 3 $ ) — the query type. - If $ t_i = 1 $ , then the $ i $ -th line also contains two integers $ l $ , $ r $ ( $ 1 \le l \le r \le n $ ). - If $ t_i = 2 $ , then the $ i $ -th line also contains two integers $ v $ , $ x $ ( $ 1 \le v \le n $ , $ -10^8 \le x \le 10^8 $ ). - If $ t_i = 3 $ , then the $ i $ -th line also contains also two integers $ i $ , $ j $ ( $ 1 \le i, j \le n $ ).
输出格式
For every first type query, print a single integer — the answer to this query.
输入输出样例
输入样例 #1
5
6 9 -5 3 0
2 3 1 5 4
6
1 1 5
2 1 1
1 1 5
3 1 5
2 1 -1
1 1 5
输出样例 #1
13
16
11
输入样例 #2
8
-15 52 -4 3 5 9 0 5
2 4 6 8 1 3 5 7
10
2 2 2
2 5 -1
1 1 8
1 1 5
1 5 8
3 1 6
2 1 50
1 1 8
2 6 -20
1 1 8
输出样例 #2
61
45
22
461
301
输入样例 #3
1
1
1
1
1 1 1
输出样例 #3
1