80分求调
查看原帖
80分求调
987505
suym123楼主2024/9/27 19:15
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct node
{
	long long x,y;
};	
node a[510];
int cmp(node p,node q)
{
	return (p.x<q.x)||(p.x==q.x&&p.y<q.y);
}
long long f[510],g[510];
int main()
{
	long long n,k,i,j,maxx=1,ans;
	cin>>n>>k;
	for(i=1;i<=n;i++)
	{
		cin>>a[i].x>>a[i].y;
	}
	sort(a+1,a+n+1,cmp);
	f[1]=1;g[1]=k;
	for(i=2;i<=n;i++)
	{
		f[i]=1;g[i]=k;
		for(j=1;j<i;j++)
		{
			if((a[i].x-a[j].x>=0&&a[i].y-a[j].y>=1)||(a[i].x-a[j].x>=1&&a[i].y-a[j].y>=0))
			{
				if(g[j]-(a[i].x-a[j].x+a[i].y-a[j].y-1)>=0)
				{
					f[i]=max(f[i],f[j]+1);
					g[i]=g[j]-(a[i].x-a[j].x+a[i].y-a[j].y-1);
				}
			}
		}
		maxx=max(maxx,f[i]);
	}
	ans=maxx+k;
	cout<<ans;
	return 0;
}
2024/9/27 19:15
加载中...