「SDOI2019」快速查询

#3110. 「SDOI2019」快速查询

Summarize

震惊!tth37 竟自己写题目概括

给定一个长度为 $n$ 的整数数列,执行 $q$ 次操作:

  • 将 $a_i$ 赋值为 $val$
  • 将所有元素同时加上 $val$
  • 将所有元素同时乘上 $val$
  • 将所有元素同时赋值为 $val$
  • 询问第 $i$ 个元素 $a_i$ 的值
  • 询问所有元素的和

$1\le n \le 1e9,1\le q \le 1e7$

Solution

还是比较好想的。

将所有元素表示为 $kx+b$,便于实现整体乘法、加法操作。

维护以下信息:大众元素的值、大众元素的数量、特殊元素 $i$ 的值、特殊元素 $i$ 上一次被单独赋值的时间、所有元素的和、上一次整体赋值的时间。

在区间赋值操作时将原始值 $val$ 转化为 $(val-b)\times k^{-1}$,以维护 $kx+b$ 的性质。

Note

特殊读入方法在计算测试数据时不要下标越界!

Code

1
2


Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×