T496408 盟誓的文艺复兴(easy)

题目背景

(别的题都有图了,这题也来一张吧) ![pApAxTx.png](https://s21.ax1x.com/2024/08/11/pApAxTx.png) 世界线变动率:$1.048596$。 $\mathcal {Amadeus}$ 是基于原型的记忆,由维克托康多利亚大学的脑科学研究所开发,能将人的记忆作为数据存储,并在此基础上学习进化的人工智能程序。并且拥有私密的专属记忆存储区域。由于拥有与原型相同的记忆,$\mathcal {Amadeus}$ 还可以使用原型的账号在网上冲浪。 研究员(部分):比屋定真帆,牧濑红莉栖。

题目描述

### 很复杂的题意 $\mathcal {Amadeus}$ 的记忆文件分为 $n$ 个板块,每个板块都有一个正整数 $a_i$ 存着她在 $\beta$ 世界线的记忆。 为了防止 $\mathcal {Amadeus}$ 被军用或其他用途,$\mathcal {Amadeus}$ 红莉栖 决定定期检查自己的记忆是否出现问题,于是有两种检查方式: - 查询 $Q.3$:$\mathcal {Amadeus}$ 红莉栖 尝试压缩记忆板块($l$ 到 $r$),因此她称满足 $\displaystyle\max_{x\le i \le y}a_i=\displaystyle\max_{l\le j \le r}a_j$ 的记忆板块区间 $[x,y]$ 是「命运石之门」,为了尽快压缩,请你求出在记忆板块区间 $[x,y]$ 内的「命运石之门」的数量。 - 查询 $Q.4$:$\mathcal {Amadeus}$ 红莉栖 在记忆块 $l$ 到 $r$ 中寻找有可能有问题的地方,即求记忆板块区间 $[l,r]$ 中,满足 $x \le a_i \le y$ 的个数。(**本题不需要求**) $\text{D-RINE}$:以上查询操作输出 一行一个整数。 $\mathcal {Amadeus}$ 红莉栖 的记忆出现问题时,她需要对比备份记忆「日记」进行一定的修改,总共有 $2$ 种修改方式: - 修改 $U.1$:由于记忆文件被「超级黑客」攻击,记忆中出现了不和谐的曲调,为了消除它,$\mathcal {Amadeus}$ 红莉栖 需要聆听莫扎特 $\text{K.331}$ 第一乐章。这会使得每个 $i$ 满足 $l \le i \le r$ 的大于 $x$ 的 $a_i$ 变成 $x$。 - 修改 $U.2$:$\mathcal {Amadeus}$ 红莉栖 会在 @Ch 学习新的知识,或者化身「栗悟饭和龟波功」与吧友讨论问题。在这之后,每个 $i$ 满足 $l \le i \le r$ 的小于 $x$ 的 $a_i$ 就会变成 $x$。 ### 简要题意 给出一段长度为 $n$ 的序列,然后有 $m$ 个操作: - `1 l r x`:对于每个 $l \le i \le r$ 让 $a_i=\min(a_i,x)$。 - `2 l r x`:对于每个 $l \le i \le r$ 让 $a_i=\max(a_i,x)$。 - `3 l r`:求 $\displaystyle\sum_{x=l}^{r}\displaystyle\sum_{y=x}^{r}\big[\displaystyle\max_{x\le i \le y}a_i=\displaystyle\max_{l\le j \le r}a_j\big]$。 - `4 l r x y`:求区间值在 $[ x , y ]$ 内的个数。(**本题不需要求**)

输入格式

**部分点强制在线** 第一行一个数 $id$,表示这是第 $id$ 个测试点(样例 $id$ 为 $0$)。 第二行一个数 $T$,表示数据组数。 对于每组数据,输入格式如下: 第一行两个正整数 $n,m$。 接下来的一行 $n$ 个数表示第 $i$ 个记忆板块的值 $a_i$。 接下来的 $m$ 行,每行 $3$ 或 $4$ 个数,表示每个操作: - `1 l r x`:四个整数 $op,l,r,x$,代表修改 $U.1$。 - `2 l r x`:四个整数 $op,l,r,x$,代表修改 $U.2$。 - `3 l r`:三个整数 $op,l,r$,代表查询 $Q.3$。 - `4 l r x y` :五个整数 $op,l,r,x,y$,代表查询 $Q.4$。(不需要)

输出格式

输出共若干行,表示每个查询操作的答案。

说明/提示

### 样例解释 对于样例 $1$: | 操作 | $a$ | 答案 | | --------- | ------------- | ---- | | 无 | $1,1,4,5,1,4$ | 无 | | `1 2 5 4` | $1,1,4,4,1,4$ | 无 | | `3 2 6` | ^ | $13$ | | `3 1 1` | ^ | $1$ | | `2 1 4 3` | $3,3,4,4,1,4$ | 无 | | `3 2 3` | ^ | $2$ | | `3 1 6` | ^ | $17$ | ### 数据范围 | 测试点($id$) | 特殊性质 | $\sum n$ | $\sum m$ | | :------------: | :---------: | :--------: | :--------: | | 1~5(10pts) | 无 | $\le 100$ | $\le 100$ | | 6~8(6pts) | ^ | $\le 10^3$ | $\le 10^3$ | | 9~10(4pts) | ^ | $\le 10^5$ | ^ | | 11~14(8pts) | ^ | $\le 10^4$ | $\le 10^4$ | | 15~19(10pts) | $\text{AB}$ | $\le 10^5$ | $\le 10^5$ | | 20~22(6pts) | $\text{AC}$ | ^ | ^ | | 23~25(6pts) | $\text{BC}$ | ^ | ^ | | 26~28(6pts) | $\text{E1}$ | ^ | ^ | | 29-32(8pts) | $\text{E2}$ | ^ | ^ | | 33-40(16pts) | $\text{F}$ | ^ | ^ | | 41-50(20pts) | 无 | ^ | ^ | 特殊性质 $\text{A}$:没有操作 $1$。 特殊性质 $\text{B}$:没有操作 $2$。 特殊性质 $\text{C}$:有且仅有一个查询操作。 特殊性质 $\text{E1}$:$a_i$ 最多有两种取值;特殊性质 $\text{E2}$:$a_i$ 恰好有三种取值。 特殊性质 $\text{F}$:数据保证随机。 对于 $id$ 为奇数的点,强制在线。 对于 $100\%$ 的数据,保证 $1\le T\le10,1 \le \sum n,\sum m \le 10^5,|a_i|\le10^9$。 每个操作满足:$op \in [1,4) \cap N,1\le l \le r \le n,|x|\le10^9$。 ### 强制在线 在每组数据第一个操作前 $k=0$,每有一次查询操作,设本次查询答案为 $p$,则 $k\to p$。 设第 $i$ 个操作输入的 $l,r$ 为 $x,y$。 则本次操作实际的 $l=[(x^2 \oplus k )\times 2333]\bmod n + 1$; 实际的 $r=[(y^2 \oplus k )\times 2024]\bmod n + 1$。 若 $l > r$,则交换 $l,r$。 其中 $\oplus$ 表示按位异或。 ### 限制和说明 本题保证有简要题意,若没有,则与出题人无关。 **注意多测,和强制在线输入的处理**。 注意本题时空限制。本题不卡常,时空限制均开到标程的两倍及以上。 请注意输入输出对效率的影响,你可以选择使用快读,这里给出快读的代码供参考。 zbojin 语:时间限制由 $1\text{s}$ 翻 $500\text{million}$ 倍变成 $500\text{ms}$。 ```cpp inline int read() { int x = 0; bool f = false; char ch = getchar(); while(ch > '9' || ch < '0'){ if(ch == '-') f = true; ch = getchar(); } while(ch >= '0' && ch