题意:给定坐标,计算能否找到一条竖线,使左右两边的点对称
思路:输入的过程中计算出最左和最右边界,然后计算出中点值,然后对每个点进行遍历,如果找不到一个点满足x1+x2=mid*2&&y1==y2,则说明不合题意,直接break,如果遍历完的话,说明都符合题意,说明可以找到竖线.
import java.util.Scanner;public class Main { static int maxn = 1000; static int[] x = new int[maxn+10]; static int[] y = new int[maxn+10]; static int mid,n; public static void main(String[] args) { Scanner scan = new Scanner(System.in); int t = scan.nextInt(); while(t--!=0){ n = scan.nextInt(); int lx = 0,rx = 0; for(int i=0;i<n;i++){ int a = scan.nextInt(); y[i] = scan.nextInt(); x[i] = a*2; if(x[i]<x[lx])lx = i; if(x[i]>x[rx])rx = i; } mid = (x[lx]+x[rx])/2; int i = 0; for(;i<n;i++){ if(!isHave(i)){ break; } } if(i>=n){ System.out.PRintln("YES"); }else{ System.out.println("NO"); } } } public static boolean isHave(int i){ for(int j=0;j<n;j++){ if(y[i]==y[j]&&x[i]+x[j]==2*mid)return true; } return false; }}
新闻热点
疑难解答