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 ...
随机推荐
- EFCodeFirst Migrations数据库迁移
EFCodeFirst Migrations数据库迁移 数据库迁移 1.生成数据库 修改类文件PortalContext.cs的静态构造函数,取消当数据库模型发生改变时删除当前数据库重建新数据库的设置 ...
- Java数组之冒泡排序
package com.kangkang.array; import java.util.Arrays; public class demo07 { public static void main(S ...
- 检查字符串是否包含另一串字符串(c++)
在c++中检查字符串是否包含另一串字符串,这个本来是我做过的一个算法题,不过最近刚好有个需求让我想到了这个题,就在此记录一下! 使用std::string::findfunction string s ...
- PAT-1148(Werewolf )思维+数学问题
Werewolf PAT-1148 题目的要点是不管n规模多大,始终只有两个狼人 说谎的是一个狼人和一个好人 紧紧抓住这两点进行实现和分析 #include <iostream> #inc ...
- CSV 注入实战
oxo1 前言 之前看到过 CSV 注入的文章,具体想了解的请搜索学习,这里不多作介绍.今天刚好碰到了导出功能,就随手测试一波,没想到还真的存在 CSV 注入漏洞. oxo2 经过 1.测试漏洞 看到 ...
- 致被职场PUA的打工人
作为打工人,除了每天面对着各种繁琐的工作,还要被动接受上级或多或少的PUA,实在是难上加难,甚至有人想不开而自杀.网络上最近流行了一个词:职场PUA,赋予了这种现象一个正式的名字. 职场PUA指的是职 ...
- Java方法:命令行传参,重载,可变参数,递归
Java方法:System.out.println()//系统类.out对象.输出方法Java方法是语句的集合,他们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中 ...
- 用实战玩转pandas数据分析(一)——用户消费行为分析(python)
CD商品订单数据的分析总结.根据订单数据(用户的消费记录),从时间维度和用户维度,分析该网站用户的消费行为.通过此案例,总结订单数据的一些共性,能通过用户的消费记录挖掘出对业务有用的信息.对其他产 ...
- 在CentOS上安装Nginx配置HTTPS并设置系统服务和开机启动(最全教程)
友情提示:全部配完大约需要20分钟,本教程配合 xshell 和 xftp 使用更佳. 系统配置:CentOS 7.5 本教程 摘繁华 版权所有. 操作按键 常用按键: 复制操作:Shift+Ins ...
- python中zip函数的使用
zip(*iterables) zip可以将多个可迭代对象组合成一个迭代器对象,通过迭代取值,可以得到n个长度为m的元组.其中n为长度最短可迭代对象的元素个数,m为可迭代对象的个数.并且每个元组的第i ...