3287. 线性分类器
摘要
Title: 3287. 线性分类器
Tag: 模拟
Memory Limit: 64 MB
Time Limit: 1000 ms
Powered by:NEFU AB-IN
3287. 线性分类器
-
题意
见原题
-
思路
如果一个点在直线上面,就是这个点带入直线方程,得到的结果大于0
那么枚举A, B集合,看是否(A在上,B在下)或(A在下,B在上)ps: 惊喜的是乱用的赋值写法都对了。。。
-
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39'''
Author: NEFU AB-IN
Date: 2022-03-18 14:44:32
FilePath: \ACM\Acwing\3290.py
LastEditTime: 2022-03-18 14:44:32
'''
n, m = map(int, input().split())
A = []
B = []
for i in range(n):
x, y, f = input().split()
x, y = map(int, [x, y])
if f == "A":
A.append([x, y])
else:
B.append([x, y])
for i in range(m):
a1, a2, a3 = map(int, input().split())
flag1_a, flag2_a, flag1_b, flag2_b = [0] * 4
for x, y in A:
if a1 + a2 * x + a3 * y >= 0:
flag1_a = 1
else:
flag1_b = 1
for x, y in B:
if a1 + a2 * x + a3 * y >= 0:
flag2_a = 1
else:
flag2_b = 1
if flag1_a + flag1_b == 2 or flag2_a + flag2_b == 2:
print("No")
continue
if (flag1_a and flag2_b) or (flag1_b and flag2_a):
print("Yes")
continue
print("No")