20pts求调
查看原帖
20pts求调
1259734
shenxiangxin楼主2025/8/2 21:04
#include<bits/stdc++.h>
using namespace std;
long long dp[20010];
long long a[105];
long long b[10010];
long long n,m;
long long ans=-0x7fffffff;
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>a[i];
		dp[a[i]]=0;
	}
	for(int i=1;i<=n;i++)
	{
		cin>>b[i];
	}
	for(int i=1;i<=n+n;i++)
	{
		dp[i]=-0x7fffffff;
	}
	dp[1]=0;

	for(int i=1;i<=n+n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(i-a[j]>=1)
			{
				dp[i]=max(dp[i],dp[i-a[j]]+b[i-a[j]]);
				if(i>=n)
				{
					ans=max(ans,dp[i]);
				}
			}
				
		}
	}
	cout<<ans;
	return 0;
}
2025/8/2 21:04
加载中...