CF316E1 Summer Homework

题目描述

三岁时,Smart Beaver 就掌握了所有的算术运算,老师惊讶地给了他这个暑假作业: 给定一个整数序列 $a_{1},a_{2},...,a_{n}$。你需要对其进行 $m$ 次连续操作,操作类型如下: 1. 给定数字 $x_{i}$ 和 $v_{i}$,将 $a_{x_{i}}$ 的值赋为 $v_{i}$。 2. 给定数字 $l_{i}$ 和 $r_{i}$,你需要计算 $\sum_{j=l_{i}}^{r_{i}} a_{j} f_{j-l_{i}}$,其中 $f_{0}=f_{1}=1$,对于 $i \geq 2$,有 $f_{i}=f_{i-1}+f_{i-2}$。 3. 给定三个数字 $l_{i}$、$r_{i}$、$d_{i}$,你需要将所有 $x$ 满足 $l_{i} \leq x \leq r_{i}$ 的 $a_{x}$ 增加 $d_{i}$。 Smart Beaver 计划去加拿大大湖区旅行,所以他请你帮他解决这个问题。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 2 \cdot 10^{5}$),分别表示序列中整数的个数和操作的次数。第二行包含 $n$ 个整数 $a_{1},a_{2},...,a_{n}$($0 \leq a_{i} \leq 10^{5}$)。接下来有 $m$ 行,每行描述一个操作。每行以一个整数 $t_{i}$($1 \leq t_{i} \leq 3$)开头,表示操作类型: - 如果 $t_{i}=1$,接下来有两个整数 $x_{i}$、$v_{i}$($1 \leq x_{i} \leq n, 0 \leq v_{i} \leq 10^{5}$); - 如果 $t_{i}=2$,接下来有两个整数 $l_{i}$、$r_{i}$($1 \leq l_{i} \leq r_{i} \leq n$); - 如果 $t_{i}=3$,接下来有三个整数 $l_{i}$、$r_{i}$、$d_{i}$($1 \leq l_{i} \leq r_{i} \leq n, 0 \leq d_{i} \leq 10^{5}$)。 对于获得 $30$ 分的输入限制(子任务 E1): - 保证 $n$ 不超过 $100$,$m$ 不超过 $10000$,且不会有第 $3$ 种类型的操作。 对于获得 $70$ 分的输入限制(子任务 E1+E2): - 保证只会有第 $1$ 种和第 $2$ 种类型的操作。 对于获得 $100$ 分的输入限制(子任务 E1+E2+E3): - 无额外限制。

输出格式

对于每个查询操作,输出计算得到的和对 $1000000000$($10^{9}$)取模后的结果。

说明/提示

由 ChatGPT 4.1 翻译