#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int n,m;cin>>n>>m;
vector<vector<int>> nums(n,vector<int>(2));
vector<char> tp(n);
for(int i = 0;i<n; i++)
cin>>nums[i][0]>>nums[i][1]>>tp[i];
char clas;//记录在直线上方的元素是什么类型
while(m--)
{
int a,b,c;cin>>a>>b>>c;
if(a+b*nums[0][0]+c*nums[0][1]<0)//第一个点是否在直线上方,如果是,则令clas为第一个点的类型,如果在下方,则令clas为另一种类型
clas = tp[0];
else
clas = tp[0]+1;
if(clas=='C')
clas = 'A';
int i;
for(i = 1;i<n;i++)
{
int ret = a+b*nums[i][0]+c*nums[i][1];
if((ret<0&&tp[i]==clas)||(ret>0&&tp[i]!=clas))
continue;
else
{
cout<<"No"<<endl;
break;
}
}
if(i==n)
cout<<"Yes"<<endl;
}
return 0;
}
CCF CSP 202006-1线性分类器
最新推荐文章于 2024-08-15 05:02:54 发布