CCF 202006-1 线性分类器
思路
给定N个已知是A还是B类别的点,给定三个参数,问是否能够组成一条直线完美将两个类别分开。(数据量小,可以枚举暴力破解)
即判断在哪一侧的两类情况:1.竖线时,即a+bx:。2.斜线时,即a+bx+cy。判断当前点带入直线方程后是否大于还是小于0就可以。
如何判断直线是否完美分开A和B,即判断A和B两个类别的点同时出现在某一侧就失败
可以提前了解下什么是二分类问题:【机器学习】逻辑回归
这个问题只是单纯的给你三个参数,问你能不能用这三个参数表示出一条直线完美分开A和B两类,而大部分机器学习二分类问题是需要让你求出若干个参数来将A和B区分开来(当然不一定非要全部区分,能够达到99%区分率就可以了),如下图,可以是曲线、折线等等,不一定非要直线。
代码实现
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 1010;//点数
int n, m;
struct Point
{
LL x, y;
char z;//类别A还是B
}q[N];
int get(int a, int b, int c, char z)
{
int s = 0;