P10638 BZOJ4355 Play with sequence

题目描述

维护一个长度为 $n$ 的整数序列 $a$,支持三种操作: - `1 u v c`,对于 $\forall i \in [u,v]$,将 $a_i$ 更改为 $c$; - `2 u v c`,对于 $\forall i \in [u,v]$,将 $a_i$ 更改为 $\max(a_i+c,0)$; - `3 u v`,输出 $\sum \limits_{i=u}^v [a_i=0]$ 的值。

输入格式

第一行输入两个正整数 $n,m$,表示序列长度和操作个数。 第二行输入 $n$ 个整数 $a_i$,表示序列的初始状态。 第三行开始,往下 $m$ 行,每行表示一个操作。

输出格式

输出若干行,每行一个整数,依次回答每个操作 $3$ 的问题。

说明/提示

对于 $100\%$ 的数据,$1\leq n,m\leq 3\times 10^5$,$0\leq a_i\leq 10^9$。 - 对于操作 $1$,保证 $0\leq c\leq 10^9$。 - 对于操作 $2$,保证 $|c| \leq 10^9$。 且对于所有操作,保证 $1\leq u\leq v\leq n$。