25pts求调
查看原帖
25pts求调
539726
Xeffry楼主2022/11/19 00:09
#include<bits/stdc++.h>
using namespace std;
struct add{
	int x,y;
	vector<int>len;
	vector<int>sum;
}mm[999];
int n,k,ans;
string a;
map<string,int>ys;
bool cmp(add x1,add x2){
	if(x1.x+x1.y==x2.x+x2.y){
		if(x1.x==x2.x)return x1.y<x2.y;
		else return x1.x<x2.x;
	}else{
		return x1.x+x1.y<x2.x+x2.y;
	}
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>mm[i].x>>mm[i].y;
		mm[i].len.push_back(0);
		mm[i].sum.push_back(1);
	}
	sort(mm+1,mm+n+1,cmp);
	for(int i=1;i<=n;i++){
		a=mm[i].x+','+mm[i].y;
		ys[a]=i;
	}
	for(int i=1;i<n;i++){
		for(int j=i+1;j<=n;j++){
			for(int v=0;v<mm[i].len.size();v++){
				if(mm[j].x<mm[i].x||mm[j].y<mm[i].y)continue;
				int las=mm[i].len[v];
				int noo=las+mm[j].x+mm[j].y-mm[i].x-mm[i].y-1;
				if(las+noo<=k){
					mm[j].len.push_back(las+noo);
					mm[j].sum.push_back(mm[i].sum[v]+1+noo);
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<mm[i].sum.size();j++){//cout<<ans;
			ans=max(ans,mm[i].sum[j]+k-mm[i].len[j]);
		}
	}
	cout<<ans;
	return 0;
}
2022/11/19 00:09
加载中...