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$。 > 按照惯例,这里应该有一个有趣的后记,但是已经阿克月赛的你想必是没有耐心去看的,所以没有。