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号