线性分类器
满分通关代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m;
char flag;
struct node{
int x;
int y;
char s;
}p1[100002];
struct line{
int a,b,c;
}l1[100];
int main(){
cin>>n>>m;int i=0,k=0;
for(int p=0;p<n;p++){
cin>>p1[p].x>>p1[p].y>>p1[p].s;
}
for(int j=0;j<m;j++){
cin>>l1[j].a>>l1[j].b>>l1[j].c;
}
for(int j=0;j<m;j++){
long long int sum1=l1[j].a+l1[j].b*p1[0].x+l1[j].c*p1[0].y;
for(i=1;i<n;i++){
long long int sum2=l1[j].a+l1[j].b*p1[i].x+l1[j].c*p1[i].y;
if(p1[i].s==p1[0].s){
if(sum1*sum2<0){
break;
}
}
else{
if(sum1*sum2>0){
break;
}
}
}
if(i==n){
cout<<"Yes";k++;
}
else{
cout<<"No";k++;
}
if(k<m) cout<<endl;
}
return 0;
}
注意数据大小,计算数据要用long long int定义