比赛 CSP2022普及组 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 上升点列 最终得分 100
用户昵称 ANIG 运行时间 0.127 s
代码语言 C++ 内存使用 2.15 MiB
提交时间 2022-10-29 16:29:54
显示代码纯文本
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct node{
	int x,y;
	friend bool operator<(node a,node b){
		if(a.y==b.y)return a.x<b.x;
		else return a.y<b.y;
	}
}p[505];
int f[505][105],n,k,res;
int jl(int a,int b){
	return p[b].x-p[a].x+p[b].y-p[a].y-1;
}
signed main(){
	freopen("csp2022pj_point.in","r",stdin);
	freopen("csp2022pj_point.out","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++)scanf("%lld%lld",&p[i].x,&p[i].y);
	sort(p+1,p+n+1);
	for(int i=1;i<=n;i++){
		f[i][0]=1;
		for(int j=0;j<=k;j++){
			for(int l=1;l<i;l++){
				if(p[l].x<=p[i].x){
					if(j>=jl(l,i))f[i][j]=max(f[i][j],f[l][j-jl(l,i)]+jl(l,i)+1);
				}
			}
			res=max(res,f[i][j]+k-j);
		}
	}
	cout<<res;
	return 0;
}