【CCF】线性分类器

人生第一道CSP认证题(并未参加,只是最近总是提这个,就去看了看),按照平时的百分制学科看,我的第一次提交算是及格了(60分)。。

在这里插入图片描述
【样例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

【样例1输出】

No
No
Yes
大佬就是大佬,感觉我的学校有好多厉害的人。。自己想了一种用来初始化类别的方式,但是不如大佬写的好,就索性模仿(抄袭,我说的真好听)一番,这个题作为第一题,确实说不上难,就连我这个菜逼第一次提交还能得60分呢(因为我少判断了情况。。),忍不住吐槽,这官网做的好laji。。
初中数学问题?就看是直线上方还是下方
#include <iostream>
using namespace std;

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

int main(){
	ios::sync_with_stdio(false);
	int n,m,i;
	cin >> n >> m;
	line le[n];
	for(i = 0;i<n;i++){
		cin >> le[i].x >> le[i].y >> le[i].type;
	} 
	int c,x,y;
	while(m--){
		bool flag = true;
		int a = -1,b = -1;
		cin >> c >> x >> y;
		for(i = 0;i<n;i++){
			int res = c+le[i].x*x+le[i].y*y>0?1:0;
			if(le[i].type=='A'){
				if(a==-1)//类别初始化
					a = res;
				else if(a!=res){
					flag = false;
					break;
				}
			}else if(le[i].type=='B'){
				if(b==-1)
					b = res;
				else if(b!=res){
					flag = false;
					break;
				}
			} 
		}
		if(flag)
			cout << "Yes" << endl;
		else
			cout << "No" << endl;
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/weixin_45845039/article/details/108286945
今日推荐