设前缀和 pre[i]=a1+⋯+ai,pre[0]=0。对卷宗段 [l,r],在 mid 处裁切当且仅当左右权重之和相等,即存在 k∈[l,r−1] 使
pre[k]=2pre[l−1]+pre[r]因为 ai≥1,前缀和严格递增,切点若存在则唯一,可用二分查找。
档案馆要把一份长度为 n 的卷宗做均分裁切。第 i 页的页码权重为 ai。起初整份卷宗作为唯一一段 [1,n] 放在待处理集合中。每次必须取出集合里一段长度严格大于 2 的完整段 [l,r],再选切点 mid(l<mid≤r):当且仅当 ∑i=lmid−1ai=∑i=midrai 时,才能把该段替换为 [l,mid−1] 与 [mid,r]。被裁开的段立即离开集合,之后只能对当前集合中的完整段继续操作,不能跨段或在段内另取子区间。下标始终相对原卷宗。请在最优策略下求出最多能裁切多少次;一次都不能切则输出 0。
约束:页数不超过 1000000,每个页码权重为正整数且不超过 1000000000。
第一行一个整数 n,表示卷宗页数。 第二行 n 个整数 a1,a2,…,an,表示各页权重。 保证 1≤n≤1000000,1≤ai≤1000000000。
输出一个整数,表示最多裁切次数。
输入
4
1 1 1 1
输出
1
说明
整段和为 4,可在前缀和为 2 处切断,得到两段长度均为 2 的段,无法再切,共 1 次。
输入
3
2 2 2
输出
0
说明
三段负荷均为 2,总和 6 为偶数,但前缀和中不存在等于半和 3 的位置,无法切断,答案为 0。
输入
7
2 2 4 1 1 2 4
输出
4
说明
先把整段按半和切开,左右子段仍可能继续均分。按唯一切点递归,总共可切 4 次。
输入
1
9
输出
0
说明
长度 1 无法切断,答案为 0。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册