3287. 线性分类器

摘要
Title: 3287. 线性分类器
Tag: 模拟
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

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")
使用搜索:谷歌必应百度