P7953 [✗✓OI R1] 逆转比特
题目背景
myy 正在广东佛山游玩,所以他出了一道 [**高明**](https://baike.baidu.com/item/%E9%AB%98%E6%98%8E%E5%8C%BA/7747108?fr=aladdin) 的题目。
题目描述
一个点在长为 $n$ 的只含有 0/1 的序列上随机游走,点的初始坐标为 $p$,重复进行以下操作:
1. 当序列全为一种字符时,停止操作;
2. 记点当前位置 $p$,等概率随机选择一个点 $q$,把点移动到 $q$,将 $q$ 处的字符的取反,总代价加上 $f(|p-q|)$,这里 $f(x)=Ax^2+Bx$,其中 $A,B$ 是两个给定常数;
3. 回到第一条。
你需要进行 $q$ 次修改,具体而言,每次修改包括
1. 将序列第 $\mathit{idx}$ 位的 0/1 翻转;
2. 查询初始坐标为 $p$ 时,停止操作后的期望代价。
**注意,一旦修改一直有效**。
你需要输出 $q$ 次询问期望代价模 $998244353$ 的结果的异或和。
考虑到输入输出量比较大,数据采用如下随机生成方式
```cpp
struct Random {
unsigned long long X;
void init(unsigned long long seed) { X = seed; }
unsigned long long Rand() {
X ^= X > 7;
X ^= X
输入格式
一行六个整数 $n,q,\mathit{seed1},\mathit{seed2},A,B$,具体含义见「题目描述」。
输出格式
一行一个整数 $\mathit{ans}$,表示 $q$ 次询问期望代价模 $998244353$ 的结果的异或和。
说明/提示
**【样例解释】**
对样例一的解释:
三次询问分别为:$110$,$p=3$,答案为 $\dfrac{11}{4}$;$010$,$p=3$,答案为 $\dfrac{17}{6}$;$110$,$p=1$,答案为 $\dfrac{11}{4}$。模 $998244353$ 意义下分别为 $249561091$、$831870297$ 和 $249561091$,异或和为 $831870297$。
**【数据范围】**
**本题采用子任务评测。**
对于 $100\%$ 的数据,满足 $3 \leq n \leq 3\times10^6$,$1 \leq q \leq 3\times10^6$,$0 \leq A, B < 998244353$,$\mathit{seed1}, \mathit{seed2}\in [0, 2^{64})$。
| 子任务 | $n\le$ | $q\le$ | 特殊性质 | 子任务得分 | 依赖子任务 | 时间限制 |
| :----: | :-----: | :-----: | :------: | :-------: |:----:|:----:|
| 0 | $5$ | $5$ | A | 5 || 1s |
| 1 | $50$ | $5$ | / | 18 |Subtask 0| 1s |
| 2 | $600$ | $50$ | / | 12 |Subtask 0~1| 1s |
| 3 | $3000$ | $3000$ | A | 10 |Subtask 0| 1s |
| 4 | $3000$ | $3000$ | / | 10 |Subtask 0~3| 1s |
| 5 | $3\times10^6$ | $3\times10^6$ | / | 45 |Subtask 0~4| 2s |
特殊性质 A:$A = 0$。
> 按照惯例,这里应该有一个有趣的后记,但是已经阿克月赛的你想必是没有耐心去看的,所以没有。