#loj5734. 「OOI 2026 Day1」置换与询问
「OOI 2026 Day1」置换与询问
#5734. 「OOI 2026 Day1」置换与询问
标签: 传统 | 时间限制: 1000 ms | 内存限制: 512 MiB |
题目描述
题目译自 Open Olympiad in Informatics 2026 Day1 T2 「Перестановки и запросы」 / 「Permutations and Queries」。
给你一个长度为 的置换 。长度为 的置换是由 到 这 个不同的整数按任意顺序组成的数组。我们定义置换的代价为所有满足 的 之和(即置换的第 个元素的 次幂)。因此,置换 的代价等于:
现在有 个三种类型的询问:
- 左右翻转:在此操作后,你的置换 将被替换为置换 ,使得对于所有 ,均有 。
- 数值翻转:在此操作后,你的置换 将被替换为置换 ,使得对于所有 ,均有 。
- 求逆置换:在此操作后,你的置换 将被替换为置换 ,使得对于所有 ,均有 。
请注意,每次操作后 仍然是一个置换。
在每个询问之后,你需要输出置换的代价。
输入格式
第一行包含两个整数 和 ,分别表示置换的长度和询问的数量。
第二行包含 个正整数 ,表示置换的元素。保证所有的 互不相同。
第三行包含 个正整数 ,表示询问的描述。数字 意味着需要对置换应用的第 个修改操作类型为 。
输出格式
输出 个整数,其中第 个整数表示在应用前 个询问后,置换代价对 取模后的余数。
样例 1
输入
5 5
1 2 3 4 5
1 2 3 1 2
输出
65 3413 3413 65 3413
样例 2
输入
5 6
5 3 1 4 2
3 3 1 2 3 1
输出
293 303 3225 215 317 3209
让我们来分析第二个样例。
初始时 。
第一个询问的类型是 ,即求逆置换。操作后置换变为 。该置换的代价为 $3^1 + 5^2 + 2^3 + 4^4 + 1^5 = 3 + 25 + 8 + 256 + 1 = 293$。
第二个询问的类型是 ,即再次求逆置换。操作后置换变回 。该置换的代价为 $5^1 + 3^2 + 1^3 + 4^4 + 2^5 = 5 + 9 + 1 + 256 + 32 = 303$。
第三个询问的类型是 ,即左右翻转。操作后置换变为 。该置换的代价为 $2^1 + 4^2 + 1^3 + 3^4 + 5^5 = 2 + 16 + 1 + 81 + 3125 = 3225$。
第四个询问的类型是 ,即数值翻转。操作后置换变为 。该置换的代价为 $4^1 + 2^2 + 5^3 + 3^4 + 1^5 = 4 + 4 + 125 + 81 + 1 = 215$。
第五个询问的类型是 ,即求逆置换。操作后置换变为 。该置换的代价为 $5^1 + 2^2 + 4^3 + 1^4 + 3^5 = 5 + 4 + 64 + 1 + 243 = 317$。
最后一个询问的类型是 ,即左右翻转。操作后置换变为 。该置换的代价为 $3^1 + 1^2 + 4^3 + 2^4 + 5^5 = 3 + 1 + 64 + 16 + 3125 = 3209$。
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 是样例。
| 子任务 | 分值 | 限制 | 限制 | 附加限制 | 子任务依赖 |
|---|---|---|---|---|---|
| 无 | |||||
| - | - | 对于所有 ,满足 | - | ||
| 对于所有 ,满足 | |||||
| 对于所有 ,初始满足 | |||||
| 无附加限制 |