#loj3637. 「2021 集训队互测」数列重排
「2021 集训队互测」数列重排
[AdditionalFile3637.zip](file://AdditionalFile3637.zip?type=additional_file)
#3637. 「2021 集训队互测」数列重排
标签: 传统 | 时间限制: 600 ms | 内存限制: 256 MiB |
题目描述
定义一个数列区间的 为区间中最小的没有出现过的自然数,定义一个数列的价值为其中 的区间数量。
给定 个小于 的自然数和一个区间 ,令 表示 个数构成的数列所有重排列中数列价值的最大值,对于每一个 ,求出 。
令 表示数字 出现的次数,保证存在正整数 ,使得 。
输入格式
由于 可能很大,将采取如下方式减少读入量:
第一行四个整数 。
第二行一个长度为 的 串,若其中第 个位置为 则数字 的出现次数为 ,否则出现次数为 。
根据输入可以推出 ,其中 为 串中 的数量。
输出格式
为了减少输出量,令 ,其中 表示二进制下的按位异或,输出一行一个整数 。
样例 1
输入
2 0 1 2
10
输出
3034
在样例给出的数列中,有 个 和 个 ,任意排列 均为 ,排列为 时 有最大值 ,答案为:
$$\displaystyle (233^0\times 15\bmod 998244353)\oplus(233^1\times 13\bmod 998244353)=3034$$样例 2
输入
14 1 14 13
10110101110101
输出
379883349
数据范围与提示
- Subtask 1(5 points):。
- Subtask 2(15 points):。
- Subtask 3(15 points):。
- Subtask 4(5 points):。
- Subtask 5(10 points):。
- Subtask 6(10 points):。
- Subtask 7(15 points):。
- Subtask 8(15 points):。
- Subtask 9(10 points):无特殊限制。
对于所有数据,满足 。