Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;)我不知道';我不知道比较坐标的快速算法_C++_Algorithm_Sorting_Compare - Fatal编程技术网

C++ C++;)我不知道';我不知道比较坐标的快速算法

C++ C++;)我不知道';我不知道比较坐标的快速算法,c++,algorithm,sorting,compare,C++,Algorithm,Sorting,Compare,最多输入100000个坐标。只能输出与特定条件对应的坐标。如果存在x值较大的坐标​​和较小的y值​​然后,相应的坐标将从输出列表中排除 我的英语不好,所以我举一些例子 [输入] 首先输入要输入的坐标数N。 然后输入坐标 [输出] 与条件对应的坐标数按升序输出 [input example] 6 1 3 6 6 7 3 8 2 8 6 2 1 下面的问题通过一个简单的循环解决了,但是当值为100000时会发生超时​​输入。我不知道该用哪种算法 我还附上了我写的C++源代码。 #包括 #包括

最多输入100000个坐标。只能输出与特定条件对应的坐标。如果存在x值较大的坐标​​和较小的y值​​然后,相应的坐标将从输出列表中排除

我的英语不好,所以我举一些例子

[输入] 首先输入要输入的坐标数N。 然后输入坐标

[输出] 与条件对应的坐标数按升序输出

[input example]

6
1 3
6 6
7 3
8 2
8 6
2 1

下面的问题通过一个简单的循环解决了,但是当值为100000时会发生超时​​输入。我不知道该用哪种算法

我还附上了我写的C++源代码。

#包括
#包括
#包括
使用名称空间std;
int main(){
int N;
cin>>N;
bool*可见=新bool[N];
对于(inti=0;i>a>>b;
v、 向后推(使配对(i,使配对(a,b));
}
对于(int i=0;iv[j]。second.second){
可见[i]=假;
打破
}
else if(visible[i]==true&&visible[j]==true&&v[i]。second.first>v[j]。second.first&&v[i]。second.secondcout看起来像是关于支配点集的问题

按X值对点进行排序(在X相等的情况下,Y是辅助键)

将第一个点(最大X)指定给
Big
变量,并将其添加到结果中


遍历数组。如果您遇到的点不是由
Big
支配的-将其分配给
Big
并将其添加到结果中您的问题的适当术语是帕累托前沿(ier)、ND树、KD树、非支配问题

有这样的图书馆。

然而,这是一项简单的任务。
你必须按一个坐标对你的点进行排序。然后从最好的一个扫描到最差的一个,只有当另一个坐标不受先前获取的点支配时才接受。它会给你
O(n log(n))这是对这些任务的一般情况下最好的。

你没有显示你的代码,为什么这个标记C++?你能分享一个你尝试过的例子吗?为什么P1、P10、P2、P6和P7是正确的点?什么是标准?让你高兴。你的轴没有标签。什么是<代码> X <代码>什么是<代码> y>代码>图像?“按坐标之一对点进行排序”-如果您的意思是仅在
x
y
上排序,则会使比较函数不满足严格的弱排序要求(
If(非pos1
pos1
pos2
相等)因此,我不会将该比较函数用于
std::sort
@tedlynmo
if(非a
,那么
a
b
在进行比较时是等效的。
a
b
不一定相等。这并没有打破严格的弱排序要求。@Kevin-Hmm,是的,在排序方面你可能是正确的。我修改了内容,并附上了一个输入和输出的示例输出和我的源代码。我修改了内容并附上了一个输入和输出示例以及我的源代码。我描述了快速方法。在对数组进行反向扫描排序后,首先选择p5,然后选择p4(与p5比较后),将p3和p2与p4进行比较并忽略它们,然后选择p6并忽略p1。
[output example]

4
5
6