题解
2024-07-08 13:02:06
发布于:广东
7阅读
0回复
0点赞
首先,我们仔细想想什么数可能作为其他所有数字之和?
如果这个数不是最大值的话,那么其他所有数字就会包含最大值,那么就不可能作为其他所有数字之和。
所以,这个数必须是序列最大值才可能满足条件。
知道思路了,用前缀和直接秒了
#include <iostream>
#include <cstdio>
using namespace std;
int a[200005], b[200005];
long long c[200005];
int main(){
int n;
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
b[i] = max(b[i - 1], a[i]), c[i] = c[i - 1] + a[i];//b数组记录序列最大值,c数组记录前缀和
}
int ct = 0;
for(int i = n; i >= 1; i--){
if(b[i] * 2 == c[i]) ct++;
}
cout << ct;
return 0;
}
这里空空如也
有帮助,赞一个