题目
分析
不用担心时间和空间,直接代入计算就行。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sca=new Scanner(System.in);
String s=sca.nextLine();
String[] sa=s.split(" ");
int n=Integer.valueOf(sa[0]);
int m=Integer.valueOf(sa[1]);
int[][] A=new int[n][2];
int[][] B=new int[n][2];
int countA=0,countB=0;
for(int i=0;i<n;i++) {
s=sca.nextLine();
String[] sa2=s.split(" ");
int a=Integer.valueOf(sa2[0]);
int b=Integer.valueOf(sa2[1]);
if(sa2[2].equals("A")) {
A[countA][0]=a;
A[countA][1]=b;
countA++;
}
else {
B[countB][0]=a;
B[countB][1]=b;
countB++;
}
}
for(int i=0;i<m;i++) {
s=sca.nextLine();
String[] sa2=s.split(" ");
int a=Integer.valueOf(sa2[0]);
int b=Integer.valueOf(sa2[1]);
int c=Integer.valueOf(sa2[2]);
int judgeA=judge(a,b,c,A[0]);
if(countA>1)
for(int j=1;j<countA;j++) {
if(judge(a,b,c,A[j])!=judgeA) {
System.out.println("No");
break;
}
else if(j==countA-1) {
for(int k=0;k<countB;k++) {
if(judge(a,b,c,B[k])!=(3-judgeA)) {
System.out.println("No");
break;
}
else if(k==countB-1)
System.out.println("Yes");
}
}
}
else {
for(int k=0;k<countB;k++) {
if(judge(a,b,c,B[k])!=(3-judgeA)) {
System.out.println("No");
break;
}
else if(k==countB-1)
System.out.println("Yes");
}
}
}
sca.close();
}
public static int judge(int a ,int b,int c,int[] xy) {
if((a+b*xy[0]+c*xy[1])==0)
return 0;
else if((a+b*xy[0]+c*xy[1])>0)
return 1;
else
return 2;
}
}
判断A类点数是否大于1那个是为了增强代码的鲁棒性,删了也无关大雅,照样能够拿满分。