P17131 [ICPC 2025 Shanghai R] No more regrets

题目背景

试题来自 [清华大学学生算法协会](https://gitlink.org.cn/thusaa/ICPC2025shanghai)。

题目描述

省队选拔结束后,White 陷入了长时间的消沉。她在成绩中看不到任何希望。即便如此,White 仍在坚持 NOI 前的最后一段训练。除了常规训练,她开始涉足自己 OI 生涯中从未有机会学习的专题——希望在告别之前,不再留下遗憾。 甩开纷乱的思绪,White 突然聚焦在眼前的一道题上,一道朴素而枯燥的数据结构题—— White 有一个长度为 $n$ 的整数序列 $a_1, a_2, \cdots, a_n$。她将对该序列执行 $q$ 次操作。每次操作是以下三种类型之一: - $1\ l\ r\ v$ — 将区间 $[l, r]$ 中的每个元素加上 $v$。 - $2\ l\ r\ v$ — 将区间 $[l, r]$ 中的每个元素赋值为 $v$。 - $3\ l\ r$ — 查询 $\sum_{i=l}^{r}(\min_{j=l}^{i} a_j) \times (\max_{j=l}^{i} a_j)$ 的值,结果对 $2^{64}$ 取模。 你的任务是模拟所有操作,并输出所有查询的结果。

输入格式

第一行包含 $2$ 个整数 $n, q$ ($1 \le n, q \le 2 \times 10^5$),分别表示元素个数和操作次数。 第二行包含 $n$ 个整数 $a_1, a_2, \cdots, a_n$ ($0 \le a_i \le 10^9$),表示初始的元素。 接下来的 $q$ 行,每行描述一次操作,格式为以下三种之一: - $1\ l\ r\ v$ ($1 \le l \le r \le n$,$-10^9 \le v \le 10^9$),表示区间加操作。 - $2\ l\ r\ v$ ($1 \le l \le r \le n$,$1 \le v \le 10^9$),表示区间赋值操作。 - $3\ l\ r$ ($1 \le l \le r \le n$),表示查询操作。 保证在整个过程中,对于每个 $1 \le i \le n$ 都有 $0 \le a_i \le 10^9$。

输出格式

对于每个查询操作,输出一行一个整数——查询结果对 $2^{64}$ 取模的值。

说明/提示

对于第 $1$ 个测试用例: 初始序列为 $2\ 3\ 5\ 4\ 1$。经过第 $3$ 次操作后变为 $2\ 3\ 2\ 2\ 1$,经过第 $6$ 次操作后变为 $7\ 8\ 7\ 7\ 6$。 对于第 $1$ 个查询,答案为 $\sum_{i=1}^{5}(\min_{j=1}^{i} a_j) \times (\max_{j=1}^{i} a_j) = 2 \times 2 + 2 \times 3 + 2 \times 5 + 2 \times 5 + 1 \times 5 = 35$。 对于第 $2$ 个查询,答案为 $\sum_{i=2}^{4}(\min_{j=2}^{i} a_j) \times (\max_{j=2}^{i} a_j) = 3 \times 3 + 3 \times 5 + 3 \times 5 = 39$。 翻译由 DeepSeek V4 Pro 完成