前缀和加二分解法
2026-04-15 20:49:32
发布于:北京
0阅读
0回复
0点赞
先算出前缀和,在二分查找,上代码
#include <bits/stdc++.h>
using namespace std ;
const int N = 1e6 ;
int a[N] , b[N];
int n ;
void solve() {
cin >> n ;
for(int i = 1 ; i <= n ; i++) {
cin >> a[i] ;
b[i] = b[i - 1] + a[i] ;
}
int l = 1 ;
int r = n ;
while(l <= r) {
int mid = (l + r) / 2 ;
if(b[mid] <= b[n] - b[mid]) {
if(b[mid] == b[n] - b[mid]) {
cout << "Yes" << endl ;
return ;
}
l = mid + 1 ;
}
else r = mid - 1 ;
}
cout << "No" << endl ;
}
int main () {
int T ;
cin >> T ;
while(T--) solve() ;
return 0 ;
}
这里空空如也

有帮助,赞一个