CCF 202006-1 线性分类器 python 满分

    科技2022-07-11  85

    CCF 202006-1 线性分类器 python 满分

    题目叙述问题描述:略输入格式:略输出格式:略样例 满分证明解题思路满分代码满分代码一满分代码二

    题目叙述

    问题描述:略

    输入格式:略

    输出格式:略

    样例

    样例输入 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 样例输出 No No Yes

    满分证明

    解题思路

    在线上面下面就是大于小于零的关系;要求全部正确;A中没B;B中没A;这里还要考虑 A B 上下关系。

    满分代码

    满分代码一

    n, m = map(int, input().split()) p = [] x = [] for i in range(n): ti = input() # 判定A为0 if ti[-1:] == "A": ti = ti[:-1] + "0" else: ti = ti[:-1] + "1" p.append(list(map(int, ti.split()))) for i in range(m): x.append(list(map(int, input().split()))) zc = list(map(lambda y: y[2], p)).count(0) oc = list(map(lambda y: y[2], p)).count(1) for i in range(m): a_s = 0 a_b = 0 b_s = 0 b_b = 0 for j in range(n): if p[j][2] == 1: if x[i][0] + x[i][1] * p[j][0] + x[i][2] * p[j][1] > 0: a_s += 1 if x[i][0] + x[i][1] * p[j][0] + x[i][2] * p[j][1] < 0: a_b += 1 else: if x[i][0] + x[i][1] * p[j][0] + x[i][2] * p[j][1] > 0: b_s += 1 if x[i][0] + x[i][1] * p[j][0] + x[i][2] * p[j][1] < 0: b_b += 1 if (abs(a_s - a_b) == oc) & (abs(b_s - b_b) == zc): print("Yes") else: print("No")

    满分代码二

    n, m = map(int, input().split()) p=[] l=[] for _ in range(n): p.append(input().split()) for _ in range(m): l.append(list(map(int, input().split()))) for i in range(m): az=0 af=0 bz=0 bf=0 for j in range(n): re=l[i][0]+l[i][1]*int(p[j][0])+l[i][2]*int(p[j][1]) if (re>0)&(p[j][2]=="A"): az=az+1 elif (re>0)&(p[j][2]=="B"): bz=bz+1 elif (re<0)&(p[j][2]=="A"): af=af+1 elif (re<0)&(p[j][2]=="B"): bf=bf+1 if ((az+bf)==n)|(((bz+af)==n)): print("Yes") else: print("No")
    Processed: 0.059, SQL: 8