或许是最优解?
查看原帖
或许是最优解?
499231
Jacky2009楼主2022/2/23 22:29

我写了一个非常简(bao)单(li)的程序,竟然过了!


程序原理:先排好序,然后用类似筛法的思路,用每一个点去筛后面的点,如果发现后面的点中有非极大点直接删除.


代码如下:

#include<bits/stdc++.h>
using namespace std;
struct point{
	int x,y;
};
bool cmp(point a,point b){
	if(a.x!=b.x)return a.x>b.x;
	return a.y>b.y;
}
vector<point>li;
int n;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		point p;
		cin>>p.x>>p.y;
		li.push_back(p);
	}
	sort(li.begin(),li.end(),cmp);
	for(int i=0;i<li.size();i++){
		for(int j=i+1;j<li.size();j++){
			if(li[i].x>=li[j].x&&li[i].y>=li[j].y){
				li.erase(li.begin()+j);
				j--;
			}
		}
	}
	for(int i=li.size()-1;i>=0;i--){
		cout<<"("<<li[i].x<<","<<li[i].y<<")";
		if(i!=0)cout<<",";
	}
}
2022/2/23 22:29
加载中...