为什么0分
查看原帖
为什么0分
1374151
fangzm楼主2024/11/24 21:02
#include<bits/stdc++.h>
using namespace std;
int a[10010],b[10010],dp[20010]; 
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	int ans = INT_MIN;
	for(int i = 0;i <= 2 * n;i++) dp[i] = INT_MIN;
	for(int i = 1;i <= m;i++) scanf("%d",a + i);
	for(int i = 1;i <= n;i++) scanf("%d",b + i);
	dp[1] = b[1];
	for(int i = 1;i <= 2 * n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			if(i >= a[i]) dp[i] = max(dp[i],dp[i - a[j]] + b[i - a[j]]);
		}
	}
	for(int x : dp) ans = max(ans,x);
	printf("%d",ans);
	return 0;
}
2024/11/24 21:02
加载中...