CCF-202006-2-稀疏向量

题目:http://118.190.20.162/view.page?gpid=T104
1.60分 运行超时

#include 
using namespace std;
int main()
{
     
    int n,a,b;
    cin>>n>>a>>b;
    map<int,int>u;
    int index,value;
    for(int i=0;i<a;i++)
    {
     
        cin>>index>>value;
        u[index]=value;
    }
    long long res=0;
    for(int i=0;i<b;i++)
    {
     
        cin>>index>>value;
        if(u[index])
            res+=value*u[index];
    }
    cout<<res;

    return 0;
}


2.100 满分

#include 
using namespace std;
int main()
{
     
    ios::sync_with_stdio(false);
    int n,a,b;
    cin>>n>>a>>b;
    map<int,int>u;
    int index,value;
    for(int i=0;i<a;i++)
    {
     
        cin>>index>>value;
        u[index]=value;
    }
    long long res=0;
    for(int i=0;i<b;i++)
    {
     
        cin>>index>>value;
        if(u[index])
            res+=value*u[index];
    }
    cout<<res;

    return 0;
}


2.100 满分

#include 
using namespace std;
int main()
{
     
    int n,a,b;
    scanf("%d %d %d",&n,&a,&b);
    //cin>>n>>a>>b;
    vector<pair<int,int>>u;
    int index,value;
    for(int i=0;i<a;i++)
    {
     
        //cin>>index>>value;
        scanf("%d %d",&index,&value);
        u.push_back({
     index,value});

    }
    long long res=0;
    int j=0;
    for(int i=0;i<b;i++)
    {
     
        scanf("%d %d",&index,&value);
        while(j<a)
        {
     
            if(index<u[j].first)
                break;
            else if(index>u[j].first)
                j++;
            else
            {
     
                res+=value*u[j].second;
                j++;
            }


        }

    }
    printf("%lld",res);

    return 0;
}


输入输出cin,cout会得90分,超时

你可能感兴趣的:(CCF-202006-2-稀疏向量)