60pt求调
查看原帖
60pt求调
1647691
songshufei楼主2025/2/8 11:21
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e4 + 10, M = 110;
int n, m, a[M], b[N], f[N];
int ans = -0x3f3f3f3f3f;
signed main ()
{
	cin >> n >> m;
	for (int i = 1; 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 ++)
		for (int j = 1; j <= m; j ++)
			if ((i - a[j]) >= 0)
				f[i] = max (f[i], f[i - a[j]] + b[i - a[j]]); // f[j]改成f[i]
	for (int i = 0; i < n; i ++)
		for (int j = 1; j <= m; j ++)
			if ((i + b[j]) >= n)
			{
				ans = max (ans, f[i] + b[i]);
				break;
			}
	cout << ans;
	return 0;
}
2025/2/8 11:21
加载中...