A1022. Digital Library
来源:互联网 发布:明朝 西方 知乎 编辑:程序博客网 时间:2024/04/30 18:30
1022. Digital Library (30)
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 (<=10000) 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 (<=1000) 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:31111111The Testing BookYue Chentest code debug sort keywordsZUCS Print20113333333Another Testing BookYue Chentest code sort keywordsZUCS Print220122222222The Testing BookCYLLkeywords debug bookZUCS Print2201161: The Testing Book2: Yue Chen3: keywords4: ZUCS Print5: 20113: blablablaSample Output:
1: The Testing Book111111122222222: Yue Chen111111133333333: keywords1111111222222233333334: ZUCS Print11111115: 2011111111122222223: blablablaNot Found
#include<cstdio>#include<string>#include<iostream>#include<vector>#include<map>#include<utility>using namespace std;map<int, vector<string> > mp;int main(){int n, book_id;scanf("%d", &n);for(int i = 0; i < n; ++i){vector<string> str; //字符串向量string temp; //临时字符串scanf("%d", &book_id); getchar();for(int j = 0; j < 5; ++j){getline(cin, temp);str.push_back(temp);}mp.insert(make_pair(book_id, str));}int m, query_id;string info;scanf("%d", &m);getchar();for(int i = 0; i < m; ++i){scanf("%d: ", &query_id);getline(cin, info);cout << query_id << ": " << info << endl;map<int, vector<string> >::iterator it = mp.begin();bool flag = false;if(query_id != 3){ //查找不等于3的情况while(it != mp.end()){if(it->second[query_id - 1] == info){printf("%07d\n", it->first); //输出书籍idflag = true;}++it;}}else{ //查找等于3的情况while(it != mp.end()){if(it->second[query_id - 1].find(info) != string::npos){printf("%07d\n", it->first); //输出书籍idflag = true;}++it;}}if(flag == false){printf("Not Found\n");}}return 0;}
这道题也可以用晴神方法,把书按查询类型归为一类,然后建立map<string, set<int> > 将书籍同一类id归为一个集合
例如 map<string, set<int> > mpTitle, mpAuthor, mpKey, mpPub, mpYear;
不过此题要注意对第三条关键字要注意,录入的时候是整条,但查询的时候是只查询一个关键字,不是像录入那样整条关键字,所以 需要单独拿出来, find()查找
另外值得一提的是,之前用cout输出最后一个测试点是911ms 换成printf最后一个测试点输出时间569ms,可见输出最好用printf,否则很容易超时
- A1022. Digital Library (30)
- A1022. Digital Library
- A1022.Digital Library(30)
- PAT A1022. Digital Library (30)
- PAT A1022 digital library (30)
- pat-a1022. Digital Library (30)
- PAT甲级练习题A1022. Digital Library (30)
- Digital Library
- Digital Library
- 1022. Digital Library (30)
- 1022. Digital Library
- PAT_1022: Digital Library
- 1022. Digital Library (30)
- 1022. Digital Library (30)
- 1022. Digital Library (30)
- PAT1022. Digital Library
- 1022. Digital Library (30)
- 1022. Digital Library (30)
- Oozie mapreduce demo
- openGPS.cn - 浏览器定位技术探讨(HTML5定位)
- app测试工具推荐
- set和map
- Fedora 25 NTP服务器配置
- A1022. Digital Library
- POJ 2718 搜索+思维
- HTML基础知识
- 深入对比数据仓库模式:Kimball vs Inmon
- oozie hive demo
- K-均值算法
- 读《代码不朽:编写可维护软件的10大要则》
- 三分钟编写PHP可扩展模块
- could only be replicated to 0 nodes instead of minReplication (=1). There are 4 datanode(s) running