2 solutions
-
1
动态规划
#include<bits/stdc++.h> using namespace std; const int N=1e4+10,M=110; int a[M],b[N],f[N];//f[i]表示走到第i关时分数的最大值。 int main() { int n,m; cin>>n>>m; for(int i=0;i<m;i++) { cin>>a[i]; } for(int i=0;i<n;i++) { cin>>b[i]; } memset(f,-0x3f,sizeof f); f[0]=0; for(int i=0;i<n;i++) { if(f[i]==-0x3f3f3f3f) { continue; } for(int j=0;j<m;j++) { int x=i+a[j]; if(x>=n) { f[n]=max(f[n],f[i]+b[i]); continue; } f[x]=max(f[x],f[i]+b[i]); } } cout<<f[n]; return 0; }
Information
- ID
- 2540
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 35
- Accepted
- 3
- Uploaded By