ZJANS

d563. 等值首尾和

Medium Last Update: 2026/02/03
前綴和後綴和Hash Table

解法一

✅ 完整代碼

評分結果(參考) : AC (28ms, 8.1MB)

#include<bits/stdc++.h>
#define int long long
using namespace std;

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n;
    cin >> n;
    vector<int> a(n);
    for(int& i : a) cin >> i;
    
    vector<int> preSum(n, 0);
    vector<int> sufSum(n, 0);
    unordered_set<int> st;
    
    preSum[0] = a[0];
    sufSum[n-1] = a[n-1];
    st.insert(preSum[0]);
    
    int ans = 0;
    for(int i=1; i<n; i++){
        preSum[i] = preSum[i-1] + a[i];
        st.insert(preSum[i]);
    }
    for(int i=n-2; i>=0; i--){
        sufSum[i] = sufSum[i+1] + a[i];
        if(st.count(sufSum[i])) ans++;
    }
    cout << ans;
    
    return 0;
}