1 条题解
-
0
思路
按位置有序选餐馆,间距必须大于k,处理多组和边界相等。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int main(){int t;cin>>t;while(t--){int n,k;cin>>n>>k;vector<int>a(n),p(n),d(n+1);for(int &x:a)cin>>x;for(int &x:p)cin>>x;for(int i=1;i<=n;i++){int j=i-1;while(j>0&&a[i-1]-a[j-1]<=k)j--;d[i]=max(d[i-1],d[j]+p[i-1]);}cout<<d[n]<<'\n';}}
- 1