该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
数组 x1,x2,⋯,xk 的前缀和数组 y1,y2,⋯,yk 满足 yi=x1+x2+⋯+xi,后缀和数组 z1,z2,⋯,zk 满足 zi=xk+xk−1+⋯+xi。
给定整数数组 a1,a2,⋯,aN,可以为负。有三种操作:
- 将每个元素乘上 −1,即变为它们的相反数。
- 选择 a 的一个区间 [l,r],将 al,al+1,⋯,ar 替换成当前 al,al+1,⋯,ar 的前缀和数组。
- 选择 a 的一个区间 [l,r],将 al,al+1,⋯,ar 替换成当前 al,al+1,⋯,ar 的后缀和数组。
每一次操作完后,对于所有数 ai,将 ai 变为 max{min{ai,1018},−1018}。
请你最小化操作的次数,使得 a 中所有元素变得非负。
输入格式
第一行两个正整数 N,id,其中 id 表示子任务编号,对于样例,id=0。
第二行 N 个整数 a1,a2,⋯,an。
输出格式
第一行一个非负整数 K 表示操作次数。
接下来 K 行,每行形如:
- 1
- 2 l r
- 3 l r
表示操作种类和 2,3 类操作的操作区间。
本题存在 SPJ,请参见“数据范围与约定”。
7 0
0 0 1 -1 -1 -1 1
2
3 1 3
2 1 7
样例解释 #1
第一次操作完,a=1,1,1,−1,−1,−1,1。
第二次操作完,a=1,2,3,2,1,0,1。
数据范围与提示
对于所有数据,有:
- 1≤n≤2×105
- −1≤ai≤1。
本题存在 SPJ,对于某个子任务,令 K1 为你的操作次数,K2 为最小的操作次数,若 K1−K2≤lim,则你的输出被认为是正确的,lim 对于每个子任务均不同。
| 子任务 |
N≤ |
特殊性质 |
lim= |
分值 |
| 1 |
2×105 |
K2≤1 |
0 |
7 |
| 2 |
无 |
100 |
11 |
| 3 |
3 |
21 |
| 4 |
1 |
5 |
| 5 |
3×103 |
存在只用 2 操作最小化操作数的方案 |
0 |
11 |
| 6 |
2×105 |
19 |
| 7 |
3×103 |
无 |
10 |
| 8 |
2×105 |
16 |