#L3637. 「2021 集训队互测」数列重排
「2021 集训队互测」数列重排
题目描述
定义一个数列区间的 为区间中最小的没有出现过的自然数,定义一个数列的价值为其中 的区间数量。
给定 个小于 的自然数和一个区间 ,令 表示 个数构成的数列所有重排列中数列价值的最大值,对于每一个 ,求出 。
令 表示数字 出现的次数,保证存在正整数 ,使得 。
输入格式
由于 可能很大,将采取如下方式减少读入量:
第一行四个整数 。
第二行一个长度为 的 01 串,若其中第 个位置为 1 则数字 的出现次数为 ,否则出现次数为 。
根据输入可以推出 ,其中 为 01 串中 1 的数量。
输出格式
为了减少输出量,令
$ans=\displaystyle{\bigoplus_{i=l}^r}(233^if(i)\bmod 998244353)$,其中 表示二进制下的按位异或,输出一行一个整数 。
样例 1
输入
2 0 1 2
10
输出
3034
在样例给出的数列中,有 3 个 0 和 2 个 1,任意排列 均为 15,排列为 时 有最大值 13,答案为:
$\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) : 无特殊限制
对于所有数据,满足 $n \leq 10^9, m \leq 10^7, 0 \leq l \leq r \leq m, X \geq 1$