HDU4287-STL模拟水题

一场2012天津网络预选赛的题,签到题。

但是还是写了三四十分钟,C++和STL太不熟悉了,总是编译错误不知道怎么解决。

一开始用的Char [] 后来改成了string,STL和string搭配起来才好用啊。

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <ctype.h>
 5 #include <cstdlib>
 6 #include <cstdio>
 7 #include <vector>
 8 #include <string>
 9 #include <queue>
10 #include <stack>
11 #include <cmath>
12 #include <set>
13 #include <map>
14 
15 using namespace std;
16 
17 int N,M,T;
18 map <string ,int> dic; 
19 string list[5010];
20 int table[]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
21 int main()
22 {
23     cin >> T;
24     string s;
25     while(T--)
26     {
27         cin >> N >> M;
28         for(int i=0;i<N;i++) {
29             cin >> list[i];
30         }
31         dic.clear();
32         for(int i=0;i<M;i++)
33         {
34             cin >> s;
35             string num;
36             for(int k=0;k < (int)s.size();k++)
37             {
38                 num += table[s[k]-'a'] + '0';
39             }
40             //cout << num << endl;
41             map<string ,int>::iterator it = dic.find(num);
42             if(it == dic.end()){
43                 dic.insert(make_pair(num,1));
44             }
45             else
46                 it->second++;
47         }
48         map<string , int>::const_iterator notFound(dic.end());
49         map<string , int>::const_iterator pos;
50         for(int i=0;i<N;i++)
51         {
52             if((pos = dic.find(list[i])) == notFound)
53                 printf("0\n");
54             else
55                 printf("%d\n",pos->second);
56         }
57     }    
58 }

 

posted @ 2015-09-05 18:03  Helica  阅读(227)  评论(0编辑  收藏  举报