BZOJ4355 Play with sequence

Luogu
IDLGP10638
Time1500ms
Memory512MB
DifficultyP6
线段树O2优化吉司机线段树 segment tree beats
维护一个长度为 $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]$ 的值。 ## Input 第一行输入两个正整数 $n,m$,表示序列长度和操作个数。 第二行输入 $n$ 个整数 $a_i$,表示序列的初始状态。 第三行开始,往下 $m$ 行,每行表示一个操作。 ## Output 输出若干行,每行一个整数,依次回答每个操作 $3$ 的问题。 [samples] ## Note 对于 $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$。
Samples
Input #1
5 3
6 4 6 6 4 
2 1 5 -5
1 3 4 4
3 1 5
Output #1
2
API Response (JSON)
{
  "problem": {
    "name": "BZOJ4355 Play with sequence",
    "description": {
      "content": "维护一个长度为 $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]$ 的值。",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1500,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P6"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP10638"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "维护一个长度为 $n$ 的整数序列 $a$,支持三种操作:\n\n- `1 u v c`,对于 $\\forall i \\in [u,v]$,将 $a_i$ 更改为 $c$;\n- `2 u v c`,对于 $\\forall i \\in [u,v]$,将 $a_i$ 更改为 $\\max(a_i+c,0)$;\n- `3 u v`,输出 $\\sum \\limits_{i=u}^v [a_i=0]$ 的值。\n\n...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments