2 solutions

  • 0
    @ 2025-12-14 15:24:41

    更精简的版本
    优化dp数组至一维

    #include<bits/stdc++.h>
    using namespace std;
    const int mod = 998244353;
    long long n,a[5005],f[5005]={1},ans;
    int main()
    {
    	cin >> n;
    	for(int i=1;i<=n;i++) cin >> a[i];
    	for(int i=1;i<=n;i++){
    		for(int j=5001;j>a[i];j--) ans = (ans+f[j])%mod;
    		for(int j=5001;j>=5001-a[i];j--) f[5001] = (f[j]+f[5001])%mod;
    		for(int j=5000;j>=a[i];j--) f[j] = (f[j-a[i]]+f[j])%mod;
    	}
    	cout << ans << endl;
    	return 0;
    }
    

    Information

    ID
    503
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    31
    Accepted
    13
    Uploaded By