1 条题解

  • 1

    #include <bits/stdc++.h>
    using namespace std;
    const int N=10005;
    const int M=105;
    const int inf=0x3f3f3f3f;
    int a[M],b[N],f[N];
    int main() {
    int n,m;
    scanf("%d%d",&n,&m);//输入n & m。
    for(int i=1;i<=m;i++)
    scanf("%d",&a[i]);//输入a数组。
    for(int i=0;i<n;i++)
    scanf("%d",&b[i]);//输入b数组。
    memset(f,-0x3f,sizeof(f));
    f[0]=0;
    for(int i=1;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]]);
    int ans=-inf;
    for(int i=0;i<n;i++)
    for(int j=1;j<=m;j++)
    if(i+a[j]>=n)
    {
    ans=max(ans,f[i]+b[i]);
    break;
    }
    cout<<ans;
    return 0;
    }
    //版权所有,严禁抄袭,仅供参考。

  • 1

信息

ID
2563
难度
7
分类
(无)
标签
递交数
84
已通过
15
通过率
18%
上传者