loj#P3637. 「2021 集训队互测」数列重排

「2021 集训队互测」数列重排

题目描述

定义一个数列区间的 mex\textrm{mex} 为区间中最小的没有出现过的自然数,定义一个数列的价值为其中 mexk\textrm{mex}\geq k 的区间数量。

​给定 nn 个小于 mm 的自然数和一个区间 [l,r][l,r],令 f(k)f(k) 表示 nn 个数构成的数列所有重排列中数列价值的最大值,对于每一个 k[l,r]k\in [l,r],求出 f(k)f(k)

​令 aia_i 表示数字 ii 出现的次数,保证存在正整数 XX,使得 i<m,ai{X,X+1}\forall i<m,a_i\in \{X,X+1\}

输入格式

由于 nn 可能很大,将采取如下方式减少读入量:

第一行四个整数 m,l,r,Xm,l,r,X

第二行一个长度为 mm0101 串,若其中第 ii 个位置为 11 则数字 i1i-1 的出现次数为 X+1X+1,否则出现次数为 XX

根据输入可以推出 n=mX+Sn=mX+S,其中 SS0101 串中 11 的数量。

输出格式

为了减少输出量,令 ans=i=lrans=\displaystyle{\bigoplus_{i=l}^r}(233if(i)mod998244353) (233^if(i)\bmod 998244353),其中 \displaystyle\bigoplus 表示二进制下的按位异或,输出一行一个整数 ansans

2 0 1 2
10
3034
14 1 14 13
10110101110101
379883349

数据范围与提示

  • Subtask 1(5 points):n,m9n,m\leq 9
  • Subtask 2(15 points):n,m200n,m\leq 200
  • Subtask 3(15 points):n,m5×103n,m\leq 5\times 10^3
  • Subtask 4(5 points):m2,l=0,r=1m\leq 2,l=0,r=1
  • Subtask 5(10 points):m106,l=m,r=mm\leq 10^6,l=m,r=m
  • Subtask 6(10 points):m106,X=1,si=0m\leq 10^6,X=1,s_i=0
  • Subtask 7(15 points):m106,rl+1104m\leq 10^6,r-l+1\leq 10^4
  • Subtask 8(15 points):m2×106m\leq 2\times 10^6
  • Subtask 9(10 points):无特殊限制。

​对于所有数据,满足 n109,m107,0lrm,X1n\leq 10^9,m\leq 10^7,0\leq l\leq r\leq m,X\geq 1