zoukankan      html  css  js  c++  java
  • 1022_Digital_Library (30分)

    这里提供两种写法, 其实都是一样的,第一种比较快。

    #include <bits/stdc++.h>
    using namespace std;
    
    map<string,set<string> > mp[6];
    
    int main()
    {
    	//freopen("in.txt","r",stdin);
    	ios::sync_with_stdio(false);
    	int N;
    	cin>>N;
    	cin.get();
    	string ID,auth,title,puber,keywords,year;
    	for (int i=0;i<N;i++) {
    		getline(cin,ID);
    		getline(cin,title);
    		mp[1][title].insert(ID);
    		getline(cin,auth);
    		mp[2][auth].insert(ID);
    		getline(cin,keywords);
    		stringstream ss(keywords);
    		string key;
    		while (ss>>key) {
    			mp[3][key].insert(ID);
    		}
    		getline(cin,puber);
    		mp[4][puber].insert(ID);
    		getline(cin,year);
    		mp[5][year].insert(ID);
    		// cout<<ID<<title<<auth<<keywords<<puber<<year<<endl;
    	}
    	int M;
    	cin>>M;
    	int num;
    	string query;
    	for (int i=0;i<M;i++) {
    		cin>>num;
    		cin.get();
    		cin.get();
    		getline(cin,query);
    	
    		set<string> ans=mp[num][query];
    		cout<<num<<": "<<query<<endl;
    		if (ans.empty())
    			cout<<"Not Found"<<endl;
    		else 
    			for (set<string>::iterator it=ans.begin();it!=ans.end();it++) cout<<*it<<endl;
    	}
    	return 0;
    }
    

    第二种:

    #include <bits/stdc++.h>
    using namespace std;
    
    map<pair<int,string>,set<string> >mp;
    
    int main()
    {
    	// freopen("in.txt","r",stdin);
    	ios::sync_with_stdio(false);
    	int N;
    	cin>>N;
    	cin.get();
    	string title,author,key,puber,year,ID;	
    	for (int i=0;i<N;i++) {
    		getline(cin,ID);
    		getline(cin,title);
    		mp[make_pair(1,title)].insert(ID);
    		getline(cin,author);
    		mp[make_pair(2,author)].insert(ID);
    		getline(cin,key);
    		stringstream ss(key);
    		string tmp;
    		while (ss>>tmp) {
    			mp[make_pair(3,tmp)].insert(ID);
    		}
    		getline(cin,puber);
    		mp[make_pair(4,puber)].insert(ID);
    		getline(cin,year);
    		mp[make_pair(5,year)].insert(ID);
    		// cout<<ID<<" "<<title<<" "<<author<<" "<<key<<" "<<puber<<" "<<year<<endl;
    	}
    	int M;
    	cin>>M;
    	int n;
    	string query;
    	for (int i=0;i<M;i++) {
    		cin>>n;
    		cin.get();
    		cin.get();
    		getline(cin,query);
    		// cout<<n<<query<<endl;
    		set<string> ans=mp[make_pair(n,query)];
    		cout<<n<<": "<<query<<endl;
    		if (ans.empty()) {
    			cout<<"Not Found"<<endl;
    		}
            else {
                for (set<string>::iterator it=ans.begin();it!=ans.end();it++) {
    			    cout<<*it<<endl;
    		    }
            }
    		
    	}
    	return 0;
    }
    
  • 相关阅读:
    内存与缓存认识
    翻转字符串里的单词
    c++ STD Gems07
    C++ STD Gems06
    C++ STD Gems05
    Silverlight RIA Services基础专题
    超漂亮的WPF界面框架(Modern UI for WPF)
    实验三——阶乘
    实验二
    实验一 Java环境的搭建&Eclipse的安装
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/12328850.html
Copyright © 2011-2022 走看看