一二三四五 上山打老虎

CCF-CSP-2020-06-1线性分类器

题目链接:http://118.190.20.162/view.page?gpid=T105

坑点:惩罚爆int 要用long long

代码:

#include<bits/stdc++.h>

using namespace std;
struct node{
    int x,y;
    node(int _x,int _y):x(_x),y(_y){}
};
vector<node>a,b;
long long nt,nx,ny;
bool check(){
    long long  atm;
    int al=0,bl=0;
    for(int i=0;i<a.size();i++){
        atm=nt+nx*a[i].x+ny*a[i].y;
        if(atm>0)al++;
    }
    for(int i=0;i<b.size();i++){
        atm=nt+nx*b[i].x+ny*b[i].y;
        if(atm>0)bl++;
    }
    if((al==a.size()&&bl==0)||(al==0&&bl==b.size()))return true;
    return false;
    }

struct {
    long long  t,x,y;
}ans[25];
int main (){
    int n,m;
    cin>>n>>m;
    int x,y;
    char ch;
    for(int i=0;i<n;i++){
        cin>>x>>y>>ch;
        if(ch=='A'){
            a.push_back(node(x,y));

        }
        else {
            b.push_back(node(x,y));
        }
    }

    for(int i=0;i<m;i++){
        cin>>ans[i].t>>ans[i].x>>ans[i].y;
    }
        for(int i=0;i<m;i++){
        nt=ans[i].t;
        nx=ans[i].x;
        ny=ans[i].y;
        if(check())
            cout<<"Yes";
        else
            cout<<"No";
        if(i!=m-1)cout<<endl;
    }
    return 0;
}
/*
9 4
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
0 2 -3
*/

posted @ 2021-03-16 09:44  黒川川  阅读(145)  评论(0)    收藏  举报