瑞瑞 • 11小时前
using namespace std; int dp[10001]; int a[1001],b[10001]; int main(){ int n,m,mp=0; cin>>n>>m; for(int i=1;i<=m;i++){
cin>>a[i];
mp=max(mp,a[i]);
} for(int i=1;i<=n;i++){
cin>>b[i];
}
memset(dp,0xf0,sizeof dp); dp[1]=b[1]; for(int i=2;i<=n;i++){
for(int j=1;j<=m;j++){
if(i>a[j]){
dp[i]=max(dp[i], dp[i-a[j]]+b[i]);
}
}
if(i+mp>n) dp[n]=max(dp[n],dp[i]);
} cout<<dp[n]; return 0; }
评论:
请先登录,才能进行评论