题解 洛谷P2772 【寻找平面上的极大点】
这道题目很简单,我们可以用暴力枚举的方式来解决。
首先,我们要按照纵坐标的值从大到小排个序,可以使用Operator,也可以写一个Compare函数。
然后,我们记录前面所有横坐标的最大值LasX,往后扫,扫到比LasX还大的,就输出答案。
注意处理一下每个答案之间的逗号!
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<bits/stdc++.h> using namespace std; struct Struct { int X; int Y; bool operator<(const Struct &Compare)const { if(Y==Compare.Y) { return X>Compare.X; } return Y>Compare.Y; } }; Struct Array[500001]; int main(void) { register int N; cin>>N; register int i; for(i=1;i<=N;i++) { cin>>Array[i].X>>Array[i].Y; } sort(Array+1,Array+N+1); register int LasX; LasX=-1; register bool Flag; Flag=true; for(i=1;i<=N;i++) { if(Array[i].X>LasX) { LasX=Array[i].X; if(Flag) { Flag=false; } else { putchar(','); } putchar('('); cout<<Array[i].X; putchar(','); cout<<Array[i].Y; putchar(')'); } } return 0; }
不要妄图追上西坠的太阳,而是要在黎明前就等着它!