1 条题解
-
0
#include <bits/stdc++.h> // 包含所有标准库头文件 using namespace std; // 使用标准命名空间 // 主函数,处理输入输出并判断平衡序列 int main() { int t; // 测试用例组数 cin >> t; // 读取测试用例组数 // 处理每组测试用例 while (t--) { int n; // 当前测试用例的序列长度 cin >> n; // 读取序列长度 int a[10005] = {0}; // 存储序列的数组,初始化大小为10005 int sum = 0; // 序列所有元素的总和 // 读取序列元素并计算总和 for (int i = 0; i < n; ++i) { cin >> a[i]; sum += a[i]; } // 总和为奇数则不可能分割,直接输出No if (sum % 2 != 0) { cout << "No" << endl; continue; // 跳过后续处理 } int target = sum / 2; // 目标值为总和的一半 int prefix_sum = 0; // 前缀和初始化为0 bool found = false; // 是否找到满足条件的分割点 // 遍历序列,计算前缀和并判断是否满足条件 for (int i = 0; i < n; ++i) { prefix_sum += a[i]; // 累加当前元素到前缀和 // 如果前缀和等于目标值,且当前不是最后一个元素 if (prefix_sum == target && i < n - 1) { found = true; // 标记找到分割点 break; // 提前退出循环 } } // 根据是否找到分割点输出结果 cout << (found ? "Yes" : "No") << endl; } return 0; }
信息
- ID
- 5054
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 16
- 已通过
- 6
- 上传者