权威 • 7天前
using namespace std; int a[22002],b[20200],f[1000005]; const int M=1e9; 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];
for(int i=0;i<n<<1;i++){
f[i]=-M;
}
f[0]=0;
for(int i=0;i<n<<1;i++){
for(int j=0;j<m;j++){
if(i>=a[j]){
f[i]=max(f[i],f[i-a[j]]+b[i-a[j]]);
}
}
}
int ans=-1e9;
for(int i=n;i<n<<1;i++){
ans=max(ans,f[i]);
}
cout<<ans;
return 0;
}
评论:
请先登录,才能进行评论