简单模拟题。

写的时候注意一些小优化,小心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[]; int Title;
char author[]; int Author;
vector<int>key;
char publisher[]; int Publisher;
int year;
}s[+];
int n,m; map<string,int>Tit,Aut,Key,Pub;
vector<string>ans;
int tot_Tit=,tot_Aut=,tot_Key=,tot_Pub=; bool cmp(const X&a,const X&b)
{
return a.id<b.id;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
cin>>s[i].id; getchar();
gets(s[i].title); if(Tit[s[i].title]==) Tit[s[i].title]=++tot_Tit; s[i].Title=Tit[s[i].title];
gets(s[i].author); if(Aut[s[i].author]==) Aut[s[i].author]=++tot_Aut; s[i].Author=Aut[s[i].author];
char tmp[]; gets(tmp);
int len=strlen(tmp);
string q;
for(int j=;j<=len;j++)
{
if(tmp[j]==' '||tmp[j]=='\0')
{
if(Key[q]==) 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]==) Pub[s[i].publisher]=++tot_Pub; s[i].Publisher=Pub[s[i].publisher];
scanf("%d",&s[i].year);
} sort(s+,s++n,cmp); scanf("%d",&m);
for(int i=;i<=m;i++)
{
char op[]; scanf("%s",op); getchar();
char h[]; gets(h);
printf("%s %s\n",op,h); if(op[]=='')
{
int num=Tit[h];
for(int i=;i<=n;i++)
if(s[i].Title==num) ans.push_back(s[i].id);
}
else if(op[]=='')
{
int num=Aut[h];
for(int i=;i<=n;i++)
if(s[i].Author==num) ans.push_back(s[i].id);
}
else if(op[]=='')
{
int num=Key[h];
for(int i=;i<=n;i++)
{
for(int j=;j<s[i].key.size();j++)
{
if(s[i].key[j]==num)
{
ans.push_back(s[i].id);
break;
}
}
}
}
else if(op[]=='')
{
int num=Pub[h];
for(int i=;i<=n;i++)
if(s[i].Publisher==num) ans.push_back(s[i].id);
}
else if(op[]=='')
{
int num=;
for(int i=;h[i];i++) num=num*+h[i]-'';
for(int i=;i<=n;i++)
if(s[i].year==num) ans.push_back(s[i].id);
}
if(ans.size()==) printf("Not Found\n");
else
{
for(int i=;i<ans.size();i++) cout<<ans[i]<<endl;
ans.clear();
}
}
return ;
}

PAT (Advanced Level) 1022. Digital Library (30)的更多相关文章

  1. PTA (Advanced Level) 1022 Digital Library

    Digital Library A Digital Library contains millions of books, stored according to their titles, auth ...

  2. 【PAT甲级】1022 Digital Library (30 分)(模拟)

    题意: 输入一个正整数N(<=10000),接下来输入N组数据,ID,书名,作者,关键词,出版社,出版年份. 然后输入一个正整数M(<=1000),接下来输入查询的数据,递增输出ID,若没 ...

  3. pat 甲级 1022. Digital Library (30)

    1022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Di ...

  4. PAT 甲级 1022 Digital Library (30 分)(字符串读入getline,istringstream,测试点2时间坑点)

    1022 Digital Library (30 分)   A Digital Library contains millions of books, stored according to thei ...

  5. 1022 Digital Library (30 分)

    1022 Digital Library (30 分)   A Digital Library contains millions of books, stored according to thei ...

  6. PAT Advanced 1022 Digital Library (30 分)

    A Digital Library contains millions of books, stored according to their titles, authors, key words o ...

  7. 1022. Digital Library (30)

    A Digital Library contains millions of books, stored according to their titles, authors, key words o ...

  8. 1022. Digital Library (30) -map -字符串处理

    题目如下: A Digital Library contains millions of books, stored according to their titles, authors, key w ...

  9. 1022 Digital Library (30)(30 point(s))

    problem A Digital Library contains millions of books, stored according to their titles, authors, key ...

随机推荐

  1. 给php代码添加规范的注释phpDocumentor

    给php代码添加规范的注释更多参考 http://phpdoc.org/docs/latest/index.html在phpdocumentor中,注释分为文档性注释和非文档性注释.所谓文档性注释,是 ...

  2. perl-cgi高级

    来源: http://www.cnblogs.com/itech/archive/2012/10/07/2714393.html 一 CGI.pm中的方法(routines)调用  1. CGI.pm ...

  3. ubuntu 上下载PHP的源代码

    参考: https://vpsineu.com/blog/how-to-build-and-install-php-5-6-9-from-source-on-ubuntu-14-04-vps/ 直接 ...

  4. 事件委托小demo(原生版)

    <style type="text/css"> body, div, span { margin:; padding:; font-family: "\5FA ...

  5. zTree异步加载并初始化树时全部展开(贴主要代码)

    <%@page pageEncoding="UTF-8"%> <%@include file="/commons/include/html_doctyp ...

  6. OpenGL ES之glUniform函数

    函数名: glUniform 功能: 为当前程序对象指定Uniform变量的值.(译者注:注意,由于OpenGL ES由C语言编写,但是C语言不支持函数的重载,所以会有很多名字相同后缀不同的函数版本存 ...

  7. Oulipo HDU 1686 KMP模板

    题目大意:求模式串在主串中的出现次数. 题目思路:KMP模板题 #include<iostream> #include<algorithm> #include<cstri ...

  8. Trie/Xor

    题目链接 /*有一个数组a1,a2,a3--an.找到一个连续子段[l,r],使得al ^ al+1 ^--^ ar达到最大. 一般思路:维护前缀异或+暴力: for(int i=1;i<=n; ...

  9. 快学Scala-第二章 控制结构和函数

    知识点: 1.条件表达式 if(x>0) 1 else 0 scala每个表达式都有一个类型,如果一致则为它们的类型,如果为混合类型表达式,则为它们的公共超类型Any. if(x>0) 1 ...

  10. Node.js学习 - File Operation

    同步异步 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的方法函数最后一个参数为 ...