1022 Digital Library
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的更多相关文章
- PAT 1022 Digital Library[map使用]
1022 Digital Library (30)(30 分) A Digital Library contains millions of books, stored according to th ...
- pat 甲级 1022. Digital Library (30)
1022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Di ...
- PAT 甲级 1022 Digital Library (30 分)(字符串读入getline,istringstream,测试点2时间坑点)
1022 Digital Library (30 分) A Digital Library contains millions of books, stored according to thei ...
- 1022 Digital Library (30 分)
1022 Digital Library (30 分) A Digital Library contains millions of books, stored according to thei ...
- 1022 Digital Library——PAT甲级真题
1022 Digital Library A Digital Library contains millions of books, stored according to their titles, ...
- 1022. Digital Library (30)
A Digital Library contains millions of books, stored according to their titles, authors, key words o ...
- 1022. Digital Library (30) -map -字符串处理
题目如下: A Digital Library contains millions of books, stored according to their titles, authors, key w ...
- PAT 甲级 1022 Digital Library
https://pintia.cn/problem-sets/994805342720868352/problems/994805480801550336 A Digital Library cont ...
- 1022 Digital Library (30)(30 point(s))
problem A Digital Library contains millions of books, stored according to their titles, authors, key ...
- PTA (Advanced Level) 1022 Digital Library
Digital Library A Digital Library contains millions of books, stored according to their titles, auth ...
随机推荐
- ngx_http_image_filter_module使用
目录 安装 基本使用 示例 参数说明 参考链接:nginx官方文档 安装 ngx_http_image_filter_module一个官方模块,用于转换JPEG.GIF.PNG和WebP格式的图像. ...
- 后端程序员之路 16、信息熵 、决策树、ID3
信息论的熵 - guisu,程序人生. 逆水行舟,不进则退. - 博客频道 - CSDN.NEThttp://blog.csdn.net/hguisu/article/details/27305435 ...
- CF1491C Pekora and Trampoline 题解
题目链接 比赛时只想到了 \(\mathcal O(n^3)\) 的暴力做法,官方题解是 \(\mathcal O(n^2)\) ,并且是可以优化为 \(\mathcal O(n)\) 的(贪心+ ...
- Java RPC 框架 Solon 1.3.9 发布,更便利的支持
Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...
- CentOS7 下 MySQL 5.7.23 & XtraBackup 24 做数据备份(1)——安装软件
在两台机子上同时操作下面的步骤 首先安装MySQL,从官网下载相对应版本的RPM包 mysql-community-client-5.7.23-1.el7.x86_64.rpm mysql-commu ...
- 测试平台系列(3) 给Hello World添加日志
给Hello World添加日志 回顾 通过上篇内容,我们已经使用「Flask」完成了我们的第一个接口.我们可以看到,使用「Flask」来编写接口是十分简单的.那么接下来,我们丰富一下上面的例子. 需 ...
- CVE-2019-12409-Apache Solr JMX服务远程代码执行
漏洞分析 https://www.freebuf.com/vuls/218730.html 漏洞介绍 该漏洞源于默认配置文件solr.in.sh中的ENABLE_REMOTE_JMX_OPTS配置选项 ...
- 强制断开ssh连接出现ssh崩溃问题
出现原因 finalshell意外终止,导致ssh连接意外终止 之后怎么都连不上虚拟机的ssh,一看是虚拟机的ssh已经被意外暂停,可能是跟finalshell的意外终止有关 解决 chmod 600 ...
- 解决springMVC https环境 jstlview redirect时变为http请求的问题
<property name="redirectHttp10Compatible" value="false" />
- java重写toString()方法
toString()方法是Object类的方法,调用toString()会返回对象的描述信息. 1)为什么重写toString()方法呢? 如果不重写,直接调用Object类的toString()方法 ...