简单模拟题。

写的时候注意一些小优化,小心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. python的历史与优劣

    历史 Python的创始人是Guido van Rossum,在发明Python语言之前Guido曾参与过一门称作ABC的语言的设计,ABC是专门为非专业程序员设计的:Guido在Python语言的设 ...

  2. MySQL的索引创建、删除

    1_1.添加PRIMARY KEY(主键索引)  mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 1_2.添加UNIQUE ...

  3. perl-cgi高级

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

  4. php 数组操作符

    1.数组操作符 数组运算符 例子 名称 结果 $a + $b 联合 $a 和 $b 的联合. $a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE. $a === $b 全等 ...

  5. kill -0

    http://unix.stackexchange.com/questions/169898/what-does-kill-0-do 检查有没有权限杀他

  6. Augular JS里的各种ng

    Augular JS里的各种ng- 正文: 1.ng-disabled="一种状态:该状态下不可用"例如: %button.btn.btn-2(ng-disabled=" ...

  7. openCV(四)---Canny边缘检测

    图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘. 直接上代码,函数简介都在代码注释中 //canny边缘检测 -(void) ...

  8. MVC 和 MVVM

    MVVM MVVM 是 Model-View-ViewModel 的简写,MVVM 模式和 MVC 模式一样,主要目的是分离视图(View)和模型(Model) MVC 回顾 MVC 结构图 MVC ...

  9. wpf计时器

    wpf应用程序间隔一段时间触发一个事件,代码如下: public MainWindow() { InitializeComponent(); DispatcherTimer timer = new D ...

  10. 【转】Xshell 十个技巧

    原文:http://www.cnblogs.com/wanhl/archive/2012/10/17/2727607.html 一.帐号密码保存.可以保存多个vps登陆信息,免去每次输入的烦恼. 二. ...