第19次CCF计算机软件能力认证试题解答(更新中)

202006-1 线性分类器

#include
#define mem(arr,p) memset(arr,p,sizeof(arr))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
bool space;
inline void print(){
     if(space)cout<<" ";space=true;};
const int maxn =1005;
const int INF=0x3f3f3f3f;
const int MOD=998244353;
struct node{
     
    int x,y;
}N;
vector<node> num1,num2;
bool judge(int a,int b,int c){
     
    ll k=a+b*num1[0].x+c*num1[0].y;
    for(int i=1;i<num1.size();++i){
     
        ll p=a+b*num1[i].x+c*num1[i].y;
        if(p*k<0) return false;
    }
    k=a+b*num2[0].x+c*num2[0].y;
    for(int i=1;i<num2.size();++i){
     
        ll p=a+b*num2[i].x+c*num2[i].y;
        if(p*k<0) return false;
    }
    return true;
}
int main(){
     
    int n,m;
    cin>>n>>m;
    char f;
    for(int i=0;i<n;++i){
     
        cin>>N.x>>N.y>>f;
        if(f=='A') num1.push_back(N);
        else num2.push_back(N);
    }
    int a,b,c;
    for(int i=0;i<m;++i){
     
        cin>>a>>b>>c;
        if(judge(a,b,c)) cout<<"Yes\n";
        else cout<<"No\n";
    }
}
/*
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 -1
-3 0 2
-3 1 2
*/



202006-2 稀疏向量

#include
#define mem(arr,p) memset(arr,p,sizeof(arr))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
bool space;
inline void print(){
     if(space)cout<<" ";space=true;};
const int maxn =1005;
const int INF=0x3f3f3f3f;
const int MOD=998244353;

int main(){
     
    ios::sync_with_stdio(false);
    map<int,int> num1;
    int n,a,b;
    cin>>n>>a>>b;
    for(int i=0;i<a;++i){
     
        int p,q;
        cin>>p>>q;
        num1[p]=q;
    }
    ll ans=0;
    for(int i=0;i<b;++i){
     
        int p,q;
        cin>>p>>q;
        if(num1[p]) ans+=num1[p]*q;
    }
    cout<<ans<<endl;
}
/*
10 3 4
4 5
7 -3
10 1
1 10
4 2-
5 30
7 40
*/

你可能感兴趣的:(乱七八糟)