题目背景
新的一个季度又要到了,Y 同学准备在他的“算法大道”上再种一些魔法树木。这条路上已经有了 棵树,每棵树都有一个“美观值”。Y 同学认为,一段连续的树木构成的区段,其整体美观值等于该区段内所有树的美观值之和。
然而,Y 同学对数字 有着一种奇特的厌恶感。他希望通过种植新树来调整美观值,确保没有任何一个区段的整体美观值恰好等于 。
题目描述
给定一个长度为 的整数序列 ,代表“算法大道”上已有的 棵树的美观值。
一个区段 ()的美观值定义为 。
Y 同学发现,某些区段的美观值恰好等于他讨厌的数字 。为了消除这些“不受欢迎的区段”,他可以在任意一个已有的区段 内,任意位置插入一棵新树。这棵新树的美观值可以是任意整数。插入一棵树会改变所有包含这个插入位置的区段的美观值,从而可能消除原有的值为 的区段。
你的任务是计算,最少需要种植多少棵新树,才能使得没有任何一个连续区段的美-观-值-等-于 ?
输入格式
第一行包含两个整数 和 。 第二行包含 个整数 。
输出格式
输出一行,一个整数,表示最少需要种植的新树数量。
样例
样例输入 #1
4 -1
3 -3 2 3
样例输出 #1
1
样例输入 #2
5 100
1 2 3 4 5
样例输出 #2
0
样例输入 #3
9 0
-1 1 -1 1 -1 1 1 -1 -1
样例输出 #3
6
提示
样例解释
-
样例 1: 序列为
[3, -3, 2, 3]
,。- 区间 的和为 。
- 区间 的和为 。这是一个不受欢迎的区段。
- 为了破坏这个区段,我们可以在位置 2 和 3 之间种一棵新树。这样,原有的
[2,3]
区段就不复存在了。只需要种 1 棵树。
-
样例 3: 序列为
[-1, 1, -1, 1, -1, 1, 1, -1, -1]
,。- 存在多个和为 0 的区段,例如
[-1, 1]
,[-1, 1, -1, 1]
等。 - 可以发现,通过在特定位置种树,可以同时破坏多个以该位置为分界点的和为 的区段。
- 一种最优策略需要种 6 棵树。
- 存在多个和为 0 的区段,例如
数据范围与约定
- 保证初始时 。