UVa:10887 Concatenation of Languages

题意:分别给你一些第一种语言和第二种语言的单词,将第一种语言的单词放在第二种语言单词的前面组成一种新语言单词,问你新语言单词有多少个。

思路:用map记录新语言单词是否出现过,并计数。

注意用cin读会WA,所以只能用getline了。

跑了2.272S,惊呆了。。


#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <string>
#include <stack>
#define MAXN 1505
using namespace std;
int main()
{
    int T,kase=0;
    cin>>T;
    while(T--)
    {
        int m,n;
        cin>>m>>n;
        cin.ignore();
        string M[MAXN],N[MAXN];
        for(int i=0; i<m; ++i) getline(cin,M[i]);
        for(int i=0; i<n; ++i) getline(cin,N[i]);
        int ans=0;
        map<string,bool> mp;
        for(int i=0; i<m; ++i)
            for(int j=0; j<n; ++j)
            {
                string t=M[i]+N[j];
                if(!mp[t])
                {
                    ans++;
                    mp[t]=true;
                }
            }
        cout<<"Case "<<++kase<<": "<<ans<<endl;
    }
    return 0;
}



你可能感兴趣的:(UVa:10887 Concatenation of Languages)