题目 20214

presuffix

查看题解 ↗GitHub ↗如何评测
题号
20214
标签
比赛NOIP
来源
炼石计划NOIP模拟赛第18套

presuffix

题目信息

时间限制: 4s

空间限制: 512M

输入文件: presuffix.in

输出文件: presuffix.out

题目描述

数组 x1,x2,⋯ ,xkx_1,x_2,\cdots,x_k 的前缀和数组 y1,y2,⋯ ,yky_1,y_2,\cdots,y_k 满足 yi=x1+x2+⋯+xiy_i =x_1+x_2+\cdots+x_i,后缀和数组 z1,z2,⋯ ,zkz_1,z_2,\cdots,z_k 满足 zi=xk+xk−1+⋯+xiz_i=x_k+x_{k-1}+\cdots+x_i。

给定整数数组 a1,a2,⋯ ,aNa_1,a_2,\cdots,a_{N},可以为负。有三种操作:

  1. 将每个元素乘上 −1-1,即变为它们的相反数。
  2. 选择 aa 的一个区间 [l,r][l,r],将 al,al+1,⋯ ,ara_l,a_{l+1},\cdots,a_{r} 替换成当前 al,al+1,⋯ ,ara_l,a_{l+1},\cdots,a_{r} 的前缀和数组。
  3. 选择 aa 的一个区间 [l,r][l,r],将 al,al+1,⋯ ,ara_l,a_{l+1},\cdots,a_{r} 替换成当前 al,al+1,⋯ ,ara_l,a_{l+1},\cdots,a_{r} 的后缀和数组。

每一次操作完后,对于所有数 aia_i,将 aia_i 变为 max⁡{min⁡{ai,1018},−1018}\max\{\min\{a_i,10^{18}\},-10^{18}\}。

请你最小化操作的次数,使得 aa 中所有元素变得非负。

输入格式

第一行两个正整数 N,idN,id,其中 idid 表示子任务编号,对于样例,id=0id=0。

第二行 NN 个整数 a1,a2,⋯ ,ana_1,a_2,\cdots,a_n。

输出格式

第一行一个非负整数 KK 表示操作次数。

接下来 KK 行,每行形如:

  • 11
  • 2 l r2 \space l \space r
  • 3 l r3 \space l \space r

表示操作种类和 2,32,3 类操作的操作区间。

本题存在 SPJ,请参见“数据范围与约定”。

样例

样例输入 #1

文本
7 0
0 0 1 -1 -1 -1 1

样例输出 #1

文本
2
3 1 3
2 1 7

样例解释 #1

第一次操作完,a=1,1,1,−1,−1,−1,1a=1,1,1,-1,-1,-1,1。

第二次操作完,a=1,2,3,2,1,0,1a=1,2,3,2,1,0,1。

数据范围与提示

对于所有数据,有:

  • 1≤n≤2×1051 \le n \le 2 \times 10^5
  • −1≤ai≤1-1 \le a_i \le 1。

本题存在 SPJ,对于某个子任务,令 K1K_1 为你的操作次数,K2K_2 为最小的操作次数,若 K1−K2≤limK_1-K_2 \le lim,则你的输出被认为是正确的,limlim 对于每个子任务均不同。

子任务 N≤N \le 特殊性质 lim=lim= 分值
11 2×1052 \times 10^5 K2≤1K_2 \le 1 00 77
22 2×1052 \times 10^5 无 100100 1111
33 2×1052 \times 10^5 无 33 2121
44 2×1052 \times 10^5 无 11 55
55 3×1033 \times 10^3 存在只用 22 操作最小化操作数的方案 00 1111
66 2×1052 \times 10^5 存在只用 22 操作最小化操作数的方案 00 1919
77 3×1033 \times 10^3 无 00 1010
88 2×1052 \times 10^5 无 00 1616

数据下载

题目 20214 的公开数据

正在读取文件列表…

常用命令

题目 20214 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。