#include <bits/stdc++.h>
using namespace std;
int b[105],a[10005];
int main(){
    ios::sync_with_stdio(false);
    int n,m,ans=0;
    cin>>n>>m;
    for(int i=1;i<=m;i++)cin>>b[i];
    for(int i=1;i<=n;i++)cin>>a[i];
    ans=a[1];
    for(int i=1;i<=n;){
        int temp=1;
        for(int j=2;j<=m;j++)if(a[i+b[j]]>a[i+b[temp]])temp=j;
        ans+=a[i+b[temp]];
        i+=b[temp];
    }
    cout<<ans;
    return 0;
}

4 条评论

  • //@花子轩 试试看
    #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;
    }

  • @ 2024-08-06 14:09:08

    是的

  • @ 2024-08-05 08:26:20

    要锻炼改错能力,向笨蛋ycg学习

  • @ 2024-08-04 20:39:00

    不要啥都放讨论区没人会一直有空帮你

  • 1

信息

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