1 条题解
-
0
实际上这种操作区间使得数组到一个固定值(比如减少到全0)都可以用差分来做,而实际上的操作次数就是差分数组中正数的和,如果c[i]>0,表示需要在这段开始一个新的区间,所有c[i]>0的和,就是所有区间“起点”处的增量总和,也就是总的区间左端点选择次数。
不过在这里我们算差分数组前需要将a里面的元素统一减1,因为目标是全1不是全0,最后统计加和输出结果即可。
import sys input = lambda:sys.stdin.readline().strip() n=int(input()) a=[0]+list(map(int,input().split()))+[0] c=[0]*len(a) for i in range(1,n+1): a[i] = a[i] - 1 for i in range(1,n+1): c[i] = a[i] - a[i-1] ans=0 for i in c: if i>0:ans+=i print(ans)
信息
- ID
- 335
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 138
- 已通过
- 47
- 上传者