1025.开餐馆
作者:
啊giao不会写代码
,
2024-07-17 09:20:43
,
所有人可见
,
阅读 10
#include<iostream>
#include<cstring>
using namespace std;
const int N = 1000010;
int a[N],b[N],f[N],n,k;//a表示地点,b表示利润,f用于记录选到fi且选择fi的最大利润是多少
int main()
{
int h;
cin>>h;
while(h--)
{ scanf("%d%d",&n,&k);
memset(f,-1,sizeof(f));
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++)
{
scanf("%d",&b[i]);
}
f[0]=b[0];
for(int i=1;i<n;i++)
{
f[i]=b[i];
for(int j=0;j<i;j++)
{
if(a[i]-a[j]>k) f[i]=max(f[i],f[j]+b[i]);
}
}
int maxx=0;
for(int i=0;i<n;i++)
{
if(f[i]>maxx)
maxx=f[i];
}
cout<<maxx<<endl;
}
return 0;
}