A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, you are supposed to output the resulting books, sorted in increasing order of their ID's.

Input Specification:

Each input file contains one test case. For each case, the first line contains a positive integer N (≤) which is the total number of books. Then N blocks follow, each contains the information of a book in 6 lines:

  • Line #1: the 7-digit ID number;
  • Line #2: the book title -- a string of no more than 80 characters;
  • Line #3: the author -- a string of no more than 80 characters;
  • Line #4: the key words -- each word is a string of no more than 10 characters without any white space, and the keywords are separated by exactly one space;
  • Line #5: the publisher -- a string of no more than 80 characters;
  • Line #6: the published year -- a 4-digit number which is in the range [1000, 3000].

It is assumed that each book belongs to one author only, and contains no more than 5 key words; there are no more than 1000 distinct key words in total; and there are no more than 1000 distinct publishers.

After the book information, there is a line containing a positive integer M (≤) which is the number of user's search queries. Then M lines follow, each in one of the formats shown below:

  • 1: a book title
  • 2: name of an author
  • 3: a key word
  • 4: name of a publisher
  • 5: a 4-digit number representing the year

Output Specification:

For each query, first print the original query in a line, then output the resulting book ID's in increasing order, each occupying a line. If no book is found, print Not Found instead.

Sample Input:

3
1111111
The Testing Book
Yue Chen
test code debug sort keywords
ZUCS Print
2011
3333333
Another Testing Book
Yue Chen
test code sort keywords
ZUCS Print2
2012
2222222
The Testing Book
CYLL
keywords debug book
ZUCS Print2
2011
6
1: The Testing Book
2: Yue Chen
3: keywords
4: ZUCS Print
5: 2011
3: blablabla
 

Sample Output:

1: The Testing Book
1111111
2222222
2: Yue Chen
1111111
3333333
3: keywords
1111111
2222222
3333333
4: ZUCS Print
1111111
5: 2011
1111111
2222222
3: blablabla
Not Found

题意:

  模拟一个图书查询系统

思路:

  模拟

Code:

  1 #include <bits/stdc++.h>
2
3 using namespace std;
4
5 struct Book {
6 string id;
7 string title;
8 string author;
9 set<string> keywords;
10 string publisher;
11 string published_year;
12 };
13
14 bool cmp(Book a, Book b) { return a.id < b.id; }
15
16 int main() {
17 int n;
18 cin >> n;
19 getchar();
20 string temp;
21 vector<Book> books(n);
22 for (int i = 0; i < n; ++i) {
23 getline(cin, books[i].id);
24 getline(cin, books[i].title);
25 getline(cin, books[i].author);
26 getline(cin, temp);
27 getline(cin, books[i].publisher);
28 getline(cin, books[i].published_year);
29 int last = 0, pos;
30 set<string> keywords;
31 while (temp.find(' ', last) != string::npos) {
32 pos = temp.find(' ', last);
33 string keyword = temp.substr(last, pos - last);
34 books[i].keywords.insert(keyword);
35 last = pos + 1;
36 }
37 books[i].keywords.insert(temp.substr(last));
38 }
39 sort(books.begin(), books.end(), cmp);
40 int m;
41 cin >> m;
42 getchar();
43 string query;
44 for (int i = 0; i < m; ++i) {
45 getline(cin, query);
46 cout << query << endl;
47 int flag = 0;
48 switch (query[0] - '0') {
49 case 1:
50 temp = query.substr(3);
51 for (int j = 0; j < n; ++j) {
52 if (books[j].title == temp) {
53 cout << books[j].id << endl;
54 flag = 1;
55 }
56 }
57 break;
58 case 2:
59 temp = query.substr(3);
60 for (int j = 0; j < n; ++j) {
61 if (books[j].author == temp) {
62 cout << books[j].id << endl;
63 flag = 1;
64 }
65 }
66 break;
67 case 3:
68 temp = query.substr(3);
69 for (int j = 0; j < n; ++j) {
70 for (string s : books[j].keywords) {
71 if (s == temp) {
72 cout << books[j].id << endl;
73 flag = 1;
74 break;
75 }
76 }
77 }
78 break;
79 case 4:
80 temp = query.substr(3);
81 for (int j = 0; j < n; ++j) {
82 if (books[j].publisher == temp) {
83 cout << books[j].id << endl;
84 flag = 1;
85 }
86 }
87 break;
88 case 5:
89 temp = query.substr(3);
90 for (int j = 0; j < n; ++j) {
91 if (books[j].published_year == temp) {
92 cout << books[j].id << endl;
93 flag = 1;
94 }
95 }
96 break;
97 default:
98 break;
99 }
100 if (flag == 0) cout << "Not Found" << endl;
101 }
102
103 return 0;
104 }

1022 Digital Library的更多相关文章

  1. PAT 1022 Digital Library[map使用]

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

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

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

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

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

  4. 1022 Digital Library (30 分)

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

  5. 1022 Digital Library——PAT甲级真题

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

  6. 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) -map -字符串处理

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

  8. PAT 甲级 1022 Digital Library

    https://pintia.cn/problem-sets/994805342720868352/problems/994805480801550336 A Digital Library cont ...

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

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

  10. PTA (Advanced Level) 1022 Digital Library

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

随机推荐

  1. Django框架-cookie和session以及中间件

    目录 一.cookie 和 session 1.为什么会有这些技术 2. cookie 2.1 Django如何设置cookie 2.2 Django如何获取cookie 2.3 Django如何设置 ...

  2. gitlab和gitlab项目迁移

    一.概述 原gitlab 操作系统:centos 6.9 版本:GitLab 社区版 10.5.1 安装方式:yum 新gitlab 操作系统:centos 7.6 版本:GitLab Communi ...

  3. 后端程序员之路 43、Redis list

    Redis数据类型之LIST类型 - Web程序猿 - 博客频道 - CSDN.NEThttp://blog.csdn.net/thinkercode/article/details/46565051 ...

  4. LeetCode-在受污染的二叉树中查找元素

    在受污染的二叉树中查找元素 LeetCode-1261 /** * 给出一个满足下述规则的二叉树: * root.val == 0 * 如果 treeNode.val == x 且 treeNode. ...

  5. java 入门环境搭建

    Java帝国的诞生 1972年C诞生 1982年C++诞生 1995年JAVA诞生,为了实现真正的跨平台,在操作系统之上又加了抽象层,叫做JAVA的虚拟机,统称JVM 三高问题: 高可用 高性能 高并 ...

  6. 关于MarkDown语法

    Markdown语法 码云笔记链接:https://gitee.com/out_of_zi_wen/practical-experience/blob/master/Markdown%E8%AF%AD ...

  7. git的工作管理和基础操作

    git的工作管理和基础操作 在本地创建git仓库管理我们的代码 初次使用git,先在本地配置一些基础信息 $ git config -l $ git config --global user.name ...

  8. Java开发工程师最新面试题库系列——Mybatis框架部分(附答案)

    Mybatis Mybatis是什么框架? 答:持久层框架 Mybatis和ORM有什么区别? 答:ORM是对象关系映射的一种设计理念,也就是对象属性对应数据库字段,让开发人员以操作对象的方式操作数据 ...

  9. 2020年12月-第02阶段-前端基础-CSS基础选择器

    CSS选择器(重点) 理解 能说出选择器的作用 id选择器和类选择器的区别 1. CSS选择器作用(重点) 如上图所以,要把里面的小黄人分为2组,最快的方法怎办? 很多, 比如 一只眼睛的一组,剩下的 ...

  10. 前端学习 node 快速入门 系列 —— 模块(module)

    其他章节请看: 前端学习 node 快速入门 系列 模块(module) 模块的导入 核心模块 在 初步认识 node 这篇文章中,我们在读文件的例子中用到了 require('fs'),在写最简单的 ...