zoukankan      html  css  js  c++  java
  • PAT (Advanced Level) 1022. Digital Library (30)

    简单模拟题。

    写的时候注意一些小优化,小心TLE。

    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<cstdio>
    #include<map>
    #include<queue>
    #include<vector>
    using namespace std;
    
    struct X
    {
        string id;
        char title[90]; int Title;
        char author[90]; int Author;
        vector<int>key;
        char publisher[90]; int Publisher;
        int year;
    }s[10000+10];
    int n,m;
    
    map<string,int>Tit,Aut,Key,Pub;
    vector<string>ans;
    int tot_Tit=0,tot_Aut=0,tot_Key=0,tot_Pub=0;
    
    bool cmp(const X&a,const X&b)
    {
        return a.id<b.id;
    }
    
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            cin>>s[i].id; getchar();
            gets(s[i].title); if(Tit[s[i].title]==0) Tit[s[i].title]=++tot_Tit; s[i].Title=Tit[s[i].title];
            gets(s[i].author); if(Aut[s[i].author]==0) Aut[s[i].author]=++tot_Aut; s[i].Author=Aut[s[i].author];
            char tmp[1000]; gets(tmp);
            int len=strlen(tmp);
            string q;
            for(int j=0;j<=len;j++)
            {
                if(tmp[j]==' '||tmp[j]=='')
                {
                    if(Key[q]==0) Key[q]=++tot_Key;
                    s[i].key.push_back(Key[q]);
                    q.clear();
                }
                else q=q+tmp[j];
            }
            gets(s[i].publisher); if(Pub[s[i].publisher]==0) Pub[s[i].publisher]=++tot_Pub; s[i].Publisher=Pub[s[i].publisher];
            scanf("%d",&s[i].year);
        }
    
        sort(s+1,s+1+n,cmp);
    
        scanf("%d",&m);
        for(int i=1;i<=m;i++)
        {
            char op[5]; scanf("%s",op); getchar();
            char h[100]; gets(h);
            printf("%s %s
    ",op,h);
    
            if(op[0]=='1')
            {
                int num=Tit[h];
                for(int i=1;i<=n;i++)
                    if(s[i].Title==num) ans.push_back(s[i].id);
            }
            else if(op[0]=='2')
            {
                int num=Aut[h];
                for(int i=1;i<=n;i++)
                    if(s[i].Author==num) ans.push_back(s[i].id);
            }
            else if(op[0]=='3')
            {
                int num=Key[h];
                for(int i=1;i<=n;i++)
                {
                    for(int j=0;j<s[i].key.size();j++)
                    {
                        if(s[i].key[j]==num)
                        {
                            ans.push_back(s[i].id);
                            break;
                        }
                    }
                }
            }
            else if(op[0]=='4')
            {
                int num=Pub[h];
                for(int i=1;i<=n;i++)
                    if(s[i].Publisher==num) ans.push_back(s[i].id);
            }
            else if(op[0]=='5')
            {
                int num=0;
                for(int i=0;h[i];i++) num=num*10+h[i]-'0';
                for(int i=1;i<=n;i++)
                    if(s[i].year==num) ans.push_back(s[i].id);
            }
            if(ans.size()==0) printf("Not Found
    ");
            else
            {
                for(int i=0;i<ans.size();i++) cout<<ans[i]<<endl;
                ans.clear();
            }
        }
        return 0;
    }
  • 相关阅读:
    雅虎前端优化的35条军规
    React+Dva
    React Component(dva)
    JavaScript(基于react+dva)
    混合开发的优缺点
    前端各种面试题大全带详细答案
    web前端面试题必看
    localStorage新手必看不容错过
    htm5+css3+js的动画效果
    关于gulp的应用
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5503089.html
Copyright © 2011-2022 走看看