Kleines Problem des linearen Klassifikators-CCF 202006-1

#include <bits/stdc++.h>
using namespace std;
const int maxn = 25;
struct Node{
    
    
    int x,y;
};
Node node;
vector<Node> A;
vector<Node> B;
vector<Node>::iterator A_it,B_it;
int n,m;
int t1,t2,t0;
int is[maxn];
map<int,string> m_ans;
bool detect(Node node)
{
    
    
    if(t0+(node.x)*t1+t2*(node.y)>0)
        return 1;
    else if(t0+(node.x)*t1+t2*(node.y)<0)
        return 0;
}
int main()
{
    
    
    fill(is,is+maxn,1);
    m_ans[0]="No";
    m_ans[1]="Yes";
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int i,j;
    char type;
    cin>>n>>m;
    for(i=0;i<n;i++)
    {
    
    
        cin>>node.x>>node.y;
        cin>>type;
        if(type == 'A')
            A.push_back(node);
        else if(type == 'B')
            B.push_back(node);
    }
    for(i=0;i<m;i++)
    {
    
    
        cin>>t0>>t1>>t2;
        bool flag = detect(A[0]);
        for(j=1;j<A.size();j++)
            if(detect(A[j])!=flag)
                is[i] = 0;
        for(j=0;j<B.size();j++)
            if(detect(B[j])==flag)
                is[i] = 0;
    }
    for(i=0;i<m-1;i++)
        cout<<m_ans[is[i]]<<endl;
    cout<<m_ans[is[i]];
    return 0;
}

Ich denke du magst

Origin blog.csdn.net/weixin_44142774/article/details/114632322
Empfohlen
Rangfolge