- 闯关游戏6级T1 2023.12
- 2024-08-04 14:44:24 @
#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 条评论
-
240735zj赵拙言 (赵拙言) LV 7 @ 2024-08-06 15:20:52
//@花子轩 试试看
#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%
- 上传者