1 条题解
-
0
文字教学
判断平衡序列的核心思路是利用总和与前缀和:
- 先计算整个序列的总和。若总和为奇数,不可能分成两个相等的整数和,直接输出
No。 - 若总和为偶数,目标是找到前
i个数的和等于总和的一半(且i < n)。遍历数组累加前缀和,若中途达到目标值,说明序列平衡。
代码
#include <bits/stdc++.h> using namespace std; int a[10005]; int main() { int t; cin >> t; while (t--) { int n; cin >> n; long long sum = 0; for (int i = 0; i < n; ++i) { cin >> a[i]; sum += a[i]; } if (sum % 2 != 0) { cout << "No\n"; continue; } long long tar = sum / 2, pre = 0; bool ok = false; for (int i = 0; i < n - 1; ++i) { pre += a[i]; if (pre == tar) { ok = true; break; } } cout << (ok ? "Yes" : "No") << "\n"; } return 0; } - 先计算整个序列的总和。若总和为奇数,不可能分成两个相等的整数和,直接输出
- 1
信息
- ID
- 10728
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 15
- 已通过
- 5
- 上传者
京公网安备 11011102002149号