在圆环上 n 个位置,每个位置有一个整数。选择两个不同的位置作为分割点,沿这两个点切开会将圆环分成两个连续的弧段,要求两个弧段各自至少包含一个位置,且两段上所有整数的和相等。
记整个圆环上所有整数之和为 S。若两段的和相等,则每段的和必然都是 2S。
在一个由 n 个位置组成的圆环上,每个位置都写有一个整数。现在需要选择两个不同的位置作为分割点,将圆环分成两个连续的弧段。要求两个弧段各自包含至少一个位置,并且两个弧段上的整数之和相等。
请问一共有多少种不同的分割方案?
圆环上的位置个数 n 满足 1≤n≤105,每个位置上的整数绝对值不超过 109。
第一行包含一个整数 n,表示圆环上的位置数量。
第二行包含 n 个整数,按顺时针顺序给出每个位置上的数值,相邻两个数之间用空格分隔。
输出一个整数,表示满足条件的分割方案数。
输入
4
1 2 1 2
输出
2
说明
整个圆环的总和 S=6,平分后目标值为 2S=3。
前缀和依次为 0, 1, 3, 4。
枚举右端点 j:
3,需要前缀和 0,出现次数 1,对应切口在位置 0 和 2 之间的一种方案;4,需要前缀和 1,出现次数 1,对应切口在位置 1 和 3 之间的一种方案。
因此共有 2 种分割方案。输入
3
1 1 1
输出
0
说明
总和 S=3 为奇数,无法分成两个和相等的整数部分,所以没有可行的分割方案,答案为 0。
输入
5
2 -1 1 2 -2
输出
2
说明
总和 S=2,目标值为 2S=1。
前缀和依次为 0, 2, 1, 2, 4, 2。
枚举右端点 j:
1,需要前缀和 0,出现次数 1,找到一种方案;2,需要前缀和 1,出现次数 1,又找到一种方案。
因此共有 2 种分割方案。输入
1
10
输出
0
说明
圆环上只有一个位置,无法选出两个不同的位置作为分割点,因此方案数为 0。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册