【CCF】202006-1-线性分类器(c++)
代码长度 1.968KB
编程语言 C++
评测结果 正确
得分 100
时间使用 15ms
空间使用 2.906MB
#include<iostream>
using namespace std;
#include<vector>
#include<string>
struct Lsort {
int m_x;
int m_y;
}A[100000], B[100000];
void printStr(string res) {
int len;
len = sizeof(res);
for (string::iterator it = res.begin(); it != res.end(); it++) {
cout << *it << endl;
}
}
void test()
{
string res[50];
int n = 0, m = 0;
cin >> n;
cin >> m;
int a_count = 0, b_count = 0;
for (int i = 0; i < n; i++) {
int a = 0, b = 0;
char c = ' ';
cin >> a;
cin >> b;
cin >> c;
if (c == 'A') {
int a_k;
a_count = a_count + 1;
a_k = a_count - 1;
A[a_k].m_x = a;
A[a_k].m_y = b;
}
if (c == 'B') {
int b_k;
b_count = b_count + 1;
b_k = b_count - 1;
B[b_k].m_x = a;
B[b_k].m_y = b;
}
}
int q = 0;
for (int i = 0; i < m; i++) {
int ad = 0, ax = 0, bd = 0, bx = 0;
int a1 = 0, a2 = 0, a3 = 0;
cin >> a1;
cin >> a2;
cin >> a3;
for (int j = 0; j < a_count; j++) {
int a_res = 0;
a_res = a1 + a2 * A[j].m_x + a3 * A[j].m_y;
if (a_res > 0) {
ad++;
}
if (a_res < 0) {
ax++;
}
}
for (int j = 0; j < b_count; j++) {
int b_res = 0;
b_res = a1 + a2 * B[j].m_x + a3 * B[j].m_y;
if (b_res > 0) {
bd++;
}
if (b_res < 0) {
bx++;
}
}
if (a_count == ad && b_count == bx || a_count == ax && b_count == bd) {
res[q] = "Yes";
}
else {
res[q] = "No";
}
q++;
}
for (int i = 0; i < m; i++) {
cout << res[i] << endl;
}
}
int main()
{
test();
return 0;
}