试题编号: | 202006-1 |
试题名称: | 线性分类器 |
时间限制: | 1.0s |
内存限制: | 512.0MB |
问题描述: | ![](https://i-blog.csdnimg.cn/blog_migrate/9e8a3e73b1a1519b24d8f5b4a9befa96.png) |
#include<bits/stdc++.h>
using namespace std;
struct Point{
int x,y;
char type;
};
int main()
{
int n,m,a,b,c,num;
cin>>n>>m;
Point p[1001];
int line[21];
for(int i=0;i<n;i++)
{
cin>>p[i].x>>p[i].y>>p[i].type;
}
for(int i=0;i<m;i++)
{
int za=0,fa=0,zb=0,fb=0,flag=1;
cin>>c>>a>>b;
for(int j=0;j<n;j++)
{
num=p[j].x*a+p[j].y*b+c;
if(p[j].type=='A')
{
if(num>0)
{
za++;
}
else if(num<0)
{
fa++;
}
}
else
{
if(num>0)
{
zb++;
}
else if(num<0)
{
fb++;
}
}
if(za&&fa||zb&&fb)
{
flag=0;
line[i]=0;
break;
}
}
if(flag)
line[i]=1;
}
for(int i=0;i<m;i++)
{
if(line[i])
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/e1f67f0c434e67dda5e92b611761f1ce.png)