平面割线平分点(构造)--牛客第三场-- Magic Line

题意:

给你n个点的坐标,让你给出两个点,这两个点的连线可以平分这些点。

思路:

先按y的大小排序,在按x的小排序,再搞一下就行了。如下图:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 struct poi{
 4           int x;
 5           int y;
 6 }p[1005];
 7 bool cmp(struct poi a,struct poi b)
 8 {
 9           if(a.y==b.y)
10                     return a.x<b.x;
11           else
12                     return a.y>b.y;
13 }
14 int main()
15 {
16           int t;
17           cin >> t;
18           while(t--)
19           {
20                     int n;
21                     scanf("%d",&n);
22                     for(int i=1;i<=n;i++)
23                     {
24                               scanf("%d%d",&p[i].x,&p[i].y);
25                     }
26                     sort(p+1,p+1+n,cmp);
27                     printf("%d %d %d %d
",2005+p[n/2].x,p[n/2].y+1,-2004+p[n/2].x,p[n/2].y-1);
28           }
29           return 0;
30 }
原文地址:https://www.cnblogs.com/--HPY-7m/p/11437002.html