DP $65pts$求调
查看原帖
DP $65pts$求调
737038
__11jiang08__楼主2022/12/17 19:49

rt

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct star{
	ll x,y;
};
ll n,k,f[509][109];
star s[509];
bool cmp(const star&a,const star&b){
	return a.x<b.x||a.x==b.x&&a.y<=b.y;
}
int main(){
//	freopen("point.in","r",stdin);
//	freopen("point.out","w",stdout);
	cin>>n>>k;
	for(ll i=1;i<=n;i++){
		cin>>s[i].x>>s[i].y;
	}
	sort(s+1,s+1+n,cmp);
	ll ans=0;
	for(ll i=1;i<=n;i++){
		f[i][k]=1;
		for(ll j=1;j<i;j++){
			if(s[j].x>s[i].y||s[j].y>s[i].y)  continue;
			ll dis=abs(s[i].x-s[j].x)+abs(s[i].y-s[j].y)-1;
			for(ll l=0;l+dis<=k;l++){
				if(f[j][l+dis]){
					f[i][l]=max(f[i][l],f[j][l+dis]+dis+1);
				}
			}
		}
	}
	for(ll i=1;i<=n;i++){
		for(ll j=0;j<=k;j++){
			ans=max(ans,f[i][j]+j);
		}
	}
	cout<<ans;
	return 0;
} 
2022/12/17 19:49
加载中...