202006-1线性分类器

问题描述
试题编号: 202006-1
试题名称: 线性分类器
时间限制: 1.0s
内存限制: 512.0MB

202006-1线性分类器
202006-1线性分类器
202006-1线性分类器

样例1

9 3
1 1 A
1 0 A
1 -1 A
2 2 B
2 3 B
0 1 A
3 1 B
1 3 B
2 0 A
0 2 -3
-3 0 2
-3 1 1

AC

#include<bits/stdc++.h>
using namespace std;

struct node {
	int x;
	int y;
	char type;
};

int main() {
	int n,m;
	cin>>n>>m;
	node a[n];
	for(int i=0; i<n; i++) {
		cin>>a[i].x>>a[i].y>>a[i].type;
	}
	while(m--) {
		int cnt=1;
		int flag;
		//0表示标记A的点在下方 1表示标记A的点在上方
		int s1,s2,s3;
		cin>>s1>>s2>>s3;
		int q=s1+s2*a[0].x+s3*a[0].y;
		if(q<0) {
			if(a[0].type=='A')
				flag=0;
			else if(a[0].type=='B')
				flag=1;
		} else if(q>0) {
			if(a[0].type=='A')
				flag=1;
			else if(a[0].type=='B')
				flag=0;
		}
		//以上均在设置标记
		for(int i=1; i<n; i++) {
			if(s1+s2*a[i].x+s3*a[i].y<0) {
				if(a[i].type=='B'&&flag==0||a[i].type=='A'&&flag==1) {
					cnt=0;
					cout<<"No"<<endl;
					break;
				}
			} else if(s1+s2*a[i].x+s3*a[i].y>0) {
				if(a[i].type=='A'&&flag==0||a[i].type=='B'&&flag==1) {
					cnt=0;
					cout<<"No"<<endl;
					break;
				}
			}
		}
		if(cnt)
			cout<<"Yes"<<endl;
	}
	return 0;
}
上一篇:字符串小知识点笔记


下一篇:洛谷P2911 [USACO08OCT]Bovine Bones G