CCF CSP202006-1 线性分类器

题目来源于CCF CSP
CCF CSP202006-1 线性分类器_第1张图片
CCF CSP202006-1 线性分类器_第2张图片
CCF CSP202006-1 线性分类器_第3张图片


代码解析

//这道题是简单题
#include
using namespace std;
struct Node {
	int x;
	int y;
	char kind;
}node[1000];
bool Check(int n,int x0,int x1,int x2) {
	#define result(x,y) (x0 + x * x1 + y * x2)
	char kind_first = 'z', kind_second = 'x';
	for (int i = 0; i < n; ++i) {
		//恰好在线上,不能区分
		if (result(node[i].x, node[i].y) == 0)
			return false;
		if (result(node[i].x, node[i].y) > 0) {
			kind_first = node[i].kind;
		}
		else if (result(node[i].x, node[i].y) < 0) {
			kind_second = node[i].kind;
		}
		if (kind_first == kind_second)
			return false;
	}
	return true;
}
int main()
{
	int n, m;  //点,查询个数
	int x0, x1, x2;//三个系数(0,1,2)
	cin >> n;
	cin >> m;
	//录入点的信息
	for (int i = 0; i < n; ++i) 
		cin >> node[i].x >> node[i].y >> node[i].kind;
	for (int i = 0; i < m; ++i) {
		cin >> x0 >> x1 >> x2;
		if (Check(n,x0,x1,x2)) {
			cout << "Yes" << endl;
		}
		else
			cout << "No" << endl;
	}
}

在这里插入图片描述

你可能感兴趣的:(CCF,CSP认证练习,算法,几何学)