P14591 [LNCPC 2025] Kanon
题目背景
> 梦。
>
> 我做着一个悠远而长久的梦。
>
> 从很久以前就一直在做着这个梦;
>
> 在梦中我凝望四季的街道,
>
> 期望与永远不会到来的人再度见面,
>
> 找寻连自己也早已忘却的遗失的东西。
>
> 多少时间、多少岁月从我身边流逝而过,
>
> 在无尽的黑夜中,一直、一直都在孤单地等待着——
>
> 等待着最后那必将到来的黎明。
>
> ——《Kanon》
题目描述
下文中,我们约定:
- 字符串的下标从 $1$ 开始。
- 对于一个字符串 $s$,$s[l:r]$ 表示将 $s_l,s_{l+1},\cdots,s_r$ 依次连接形成的字符串。
- $a\oplus b$ 表示 $a$ 和 $b$ 在二进制下按位异或得到的值。
- $\bigoplus\limits_{i=1}^na_i=a_1\oplus a_2\oplus\cdots\oplus a_n$。
---
亚由的梦里有一个长度为 $n$ 的、仅由数字 $0$ 和 $1$ 构成的字符串 $s$。她现在需要将其划分成 $k$ 个非空子段 $s[1:p_1],s[p_1+1:p_2],\cdots,s[p_{k-1}+1:n]$,其中 $1\le p_1
输入格式
每个测试点包含多组测试数据。第一行给定一个整数 $T(1\leq T\leq 10^4)$,表示测试数据组数。
对于每组测试数据,给定一行一个仅由 $0$ 和 $1$ 构成的字符串 $s$。
保证在每个测试点中所有测试数据的字符串的长度的总和不超过 $3\times 10^6$。
输出格式
对于每组数据,为了避免大量的输出,采用如下输出方式(本题正解不依赖该输出方式):
设对于 $k=1,2,\cdots,n$,对应的最大值对 $998244353$ 取模后,为 $p_1,p_2,\cdots,p_n$;权值为最大值的划分方案数对 $998244353$ 取模后,为 $q_1,q_2,\cdots,q_n$。则一行输出四个整数 $A,B,C,D$,用半角空格隔开。其中 $A,B,C,D$ 的值分别为:
$$
\begin{aligned}
A&=\bigoplus_{i=1}^np_i\\
B&=\bigoplus_{i=1}^nq_i\\
C&=\bigoplus_{i=1}^n(p_i\times i)\\
D&=\bigoplus_{i=1}^n(q_i\times i)\\
\end{aligned}
$$
注意,需要取模的只有最终得到的最大值和权值为最大值的划分方案数。**您无需在计算 $\boldsymbol{A,B,C,D}$ 的过程中取模**。
说明/提示
### 样例解释
对于样例的第一组测试数据,下面分别算出 $k=1,2,3$ 时对应的答案:
- $k=1$:最大值即为它本身 $(110)_2=6$,方案数为 $1$。
- $k=2$:当划分方案为 $(11,0)$ 或 $(1,10)$ 时,都可以得到最大值,为 $(11)_2\oplus(0)_2=(1)_2\oplus(10)_2=3$,方案数为 $2$。
- $k=3$:划分方案只有 $(1,1,0)$,最大值为 $(1)_2\oplus(1)_2\oplus(0)_2=0$,方案数为 $1$。
这样可以得到 $p=\{6,3,0\},q=\{1,2,1\}$,可以分别求得 $A,B,C,D$:
$$
\begin{aligned}
A&=6\oplus3\oplus0=5\\
B&=1\oplus2\oplus1=2\\
C&=(6\times1)\oplus(3\times2)\oplus(0\times3)=0\\
D&=(1\times1)\oplus(2\times2)\oplus(1\times3)=6
\end{aligned}
$$
故输出的数分别为 $5,2,0,6$。