2 solutions
-
0
更精简的版本
优化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