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

满分证明

在这里插入图片描述

解题思路

  1. 在线上面下面就是大于小于零的关系;
  2. 要求全部正确;
  3. A中没B;
  4. B中没A;
  5. 这里还要考虑 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")

需者自取传送门(∩ᄑ_ᄑ)⊃━☆【CCF 2013-2021】本博主整理历年至少前两题 python 满分代码目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值