样例输出
40
30
【题解】将问题转化成LIS(最长上升子序列)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int T,n,k,v[102],p[102],f[103];
cin>>T;
while(T--)
{
cin>>n>>k;
int ans=0;
for(int i=0;i<n;i++) cin>>p[i];
for(int i=0;i<n;i++) cin>>v[i];
for(int i=0;i<n;i++)
{
int cn=0;
for(int j=0;j<i;j++)
{
if(p[i]-p[j]>k)
cn=max(cn,v[j]);
}
v[i]+=cn;
if(v[i]>ans) ans=v[i];
}
cout<<ans<<endl;
}
return 0;
}