B4038 [GESP202409 三级] 平衡序列
欢迎报名洛谷网校,期待和大家一起进步!
:::align{center} :::
思路 1(无法通过本题)
题目问,是否存在一个正整数
因此,使用一重循环枚举
这样做的结果虽然是正确的,但是无法通过本题。这是因为,循环枚举的时间复杂度是
思路 2(可以通过本题)
把序列第
2 3 1 4
在这个例子中,序列的总和是
因此,在读入序列
这样的做法,对于每组测试数据,只有一层循环进行处理,总的时间复杂度是
需要注意,本题有多组测试数据,因此在处理每一组测试数据之前,记录总和、标记答案的相关变量都需要初始化,以免造成意料之外的情况。
参考代码(只保留关键部分):
//需要初始化变量 sum, sum2, flag
for (int i = 1; i <= n; i++) {
cin >> a[i];
sum += a[i];
}
for (int i = 1; i <= n; i++) {
sum2 += a[i];
if (sum2 * 2 == sum)
flag = true;
}