#P10891. 【烂题杯 Round 1】消灭劳嗝

    ID: 12331 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>O2优化容斥原理单调栈

【烂题杯 Round 1】消灭劳嗝

题目描述

你需要消灭劳嗝。

给定一个长度为 nn 的排列 A=a1,a2,⋯ ,anA=a_1,a_2,\cdots,a_n,定义 Si={x∣x≥i∧max⁡i≤k≤xak≤ax}S_i=\{x|x\ge i\land \max_{i\le k\le x}a_k\le a_x\},您可以把它理解为以 ii 开头的后缀的前缀最大值的下标集合。例如对于 A={3,5,2,1,4}A=\{3,5,2,1,4\},S1={1,2}S_1=\{1,2\},S3={3,5}S_3=\{3,5\}。

有 qq 次询问,每次询问给出 l,rl,r,求:

$$\left(\left(\sum_{l\le x\le y\le r} |S_x\cup S_y|-\sum_{\substack{{1\le x<l}\\{r<y\le n}}} |S_x\cup S_y|\right)\bmod P+P\right)\bmod P$$

其中,P=998244353P=998244353。

输入格式

由于输入文件过大无法上传,接下来我们将会以一种诡异的方式读入数据。

第一行输入两个非负整数 nn、XX。表示排列长度、随机种子。

初始令 ai=ia_i=i,接下来输入一行一个整数 cc,表示对排列的操作次数。

接下来我们将会对排列 AA 进行 cc 次操作,对于下标从 11 开始的第 ii 次操作,令 $l=(X\times (X\oplus i))\bmod n+1,r=(X\oplus(i\times i))\bmod n+1$,你需要交换 ala_l 与 ara_r。⊕\oplus 表示按位异或。

对于 C++,代码实现如下:

l = (1ll * X * (X ^ i)) % n + 1;
r = (X ^ (1ll * i * i)) % n + 1;

接下来输入一行一个整数 qq,表示询问组数。

对于下标从 11 开始的第 ii 次询问,我们令 $l=\min((X\times i+(X\oplus (X\times i)))\bmod n,(X-i+(X\oplus (X+i)))\bmod n)+1,r=\max((X\times i+(X\oplus (X\times i)))\bmod n,(X-i+(X\oplus (X+i)))\bmod n)+1$。表示询问的参数。

对于 C++,代码实现如下:

l = min((1ll * X * i + (X ^ (1ll * X * i))) % n, (X - i + (X ^ (X + i))) % n) + 1;
r = max((1ll * X * i + (X ^ (1ll * X * i))) % n, (X - i + (X ^ (X + i))) % n) + 1;

输出格式

由于输出文件过大无法上传,接下来我们将会以一种诡异的方式输出数据。

输出一行一个整数,表示 qq 次询问中所有答案的异或和。

5 3
4
5
998244304
10 114514
191981
3
998244191

提示

样例 1 解释:

操作后 A={1,5,4,2,3}A=\{1,5,4,2,3\}。

对询问解密后真实询问如下:

4 5
2 3
1 5
3 4
3 5

对输出解密后真实输出如下:

5
998244350
33
1
11

对于第一个询问,S4={4,5}S_4=\{4,5\},S5={5}S_5=\{5\},∣S4∪S4∣+∣S4∪S5∣+∣S5∪S5∣=5|S_4\cup S_4|+|S_4\cup S_5|+|S_5\cup S_5|=5。

对于倒数第二个询问,不要忘了 1≤x<l,r<y≤n1\le x<l,r<y\le n 的项。

数据范围:

对于 20%20\% 的数据,满足 1≤n≤1001\le n\le 100、1≤q≤1001\le q\le 100。

对于 40%40\% 的数据,满足 1≤n≤1001\le n\le 100、1≤q≤1051\le q\le 10^5。

对于 60%60\% 的数据,满足 1≤n≤1051\le n\le 10^5、1≤q≤1051\le q\le 10^5。

对于 80%80\% 的数据,满足 1≤n≤3×1061\le n\le 3\times10^6、1≤q≤3×1061\le q\le 3\times10^6。

对于 100%100\% 的数据,满足 1≤n≤1071\le n\le 10^7,1≤q≤1071\le q\le 10^7,0≤c≤1070\le c\le 10^7,0≤X≤1090\le X\le 10^9,aia_i 互不相同。

请各位选手注意常数因子的影响。