CSP 202006-1 线性分类器 C语言满分答案
真的坑,注意输出是大写开头不是全大写 把测试数据放在这里给大家吧,官网的是图片复制不了
输入案例
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
下面的是答案
#include <stdio.h>
struct INPUT
{
int x;
int y;
char type;
};
main()
{
int n,m;
scanf("%d %d",&n,&m);
struct INPUT input[n];
int i,j,k;
int out[m];
int all_a=0,all_b=0;
for(i=0;i<n;i++)
{
scanf("%d %d %c",&input[i].x,&input[i].y,&input[i].type);
if(input[i].type=='A')all_a++;
else all_b++;
}
for(i=0;i<m;i++)
{
int abc[3];
int count_a=0,count_b=0;
scanf("%d %d %d",&abc[0],&abc[1],&abc[2]);
out[i]=0;
for(j=0;j<n;j++)
{
if(input[j].type=='A')
{
if(abc[0]+abc[1]*input[j].x+abc[2]*input[j].y>0)count_a++;
}else
{
if(abc[0]+abc[1]*input[j].x+abc[2]*input[j].y>0)count_b++;
}
}
if(count_a==0&&count_b==all_b||count_a==all_a&&count_b==0)out[i]=1;
}
for(i=0;i<m;i++)
{
if(out[i]==1)printf("Yes");
else printf("No");
printf("\n");
}
return 0;
}
|