AcWing 3287. 线性分类器
原题链接
简单
作者:
Jin_YZZ
,
2021-04-10 22:04:18
,
所有人可见
,
阅读 628
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
#define LL long long
struct NODE{
LL x,y;
}nodeA[N],nodeB[N];
int fuhao(LL x){
return x>0?1:-1;
}
int main(){
int n,m,x,y;
char c;
cin>>n>>m;
int cntA=0,cntB=0;
for(int i=0;i<n;i++){
cin>>x>>y>>c;
if(c=='A'){
nodeA[cntA].x=x;
nodeA[cntA].y=y;
cntA++;
}
else{
nodeB[cntB].x=x;
nodeB[cntB].y=y;
cntB++;
}
}
LL A,B,C;
while(m--){
cin>>A>>B>>C;
int flag,flag1=0,flag2=0,res=1;
LL u=A+B*nodeA[0].x+C*nodeA[0].y;
flag1=fuhao(u);
for(int i=1;i<cntA;i++){
flag=fuhao(A+B*nodeA[i].x+C*nodeA[i].y);
if(flag1!=flag){
res=-1;
break;
}
}
LL v=A+B*nodeB[0].x+C*nodeB[0].y;
flag2=fuhao(v);
if(flag1 != -flag2){
res=-1;
}
for(int i=1;i<cntB&&res!=-1;i++){
flag=fuhao(A+B*nodeB[i].x+C*nodeB[i].y);
if(flag!=flag2){
res=-1;
break;
}
}
if(res==1)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
system("pause");
return 0;
}
狠人