CCF_202006-1试题及答案(Java )
题目
分析
不用担心时间和空间,直接代入计算就行。
代码
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那个是为了增强代码的鲁棒性,删了也无关大雅,照样能够拿满分。