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()
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")