[USACO22FEB] Sleeping in Class B 题解
(参考 USACO 官方题解)
关键点是发现:不论怎么改变数组,它的元素总和总是不变的。
通过枚举处理后的数组的长度
时间复杂度:
int a[1000006];
int main() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
int sum = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
}
int ans;
for (int i = n; i >= 1; i--) { // r
if (sum % i != 0)
continue;
int cur = 0;
bool flag = 1;
for (int j = 0; j < n; j++) {
cur += a[j];
if (cur > sum / i) {
flag = 0;
break;
} else if (cur == sum / i) {
cur = 0;
}
}
if (flag) {
ans = n - i;
break;
}
}
cout << ans << endl;
}
return 0;
}