20分,没看懂
查看原帖
20分,没看懂
833124
BIOS楼主2024/4/29 23:56
#include<iostream>
#include<unordered_map>
using namespace std;
const int N=2e5+5;
string s[N],s1,s2,a,b;
int n,res;
unordered_map<string,int>cnt;
unordered_map<string,string>name;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>s1>>s2,s[i]=s1,name[s1]=s2,cnt[s2.substr(0,2)+s1.substr(0,2)]++;
    for(int i=1;i<=n;i++)
    {
        a=s[i].substr(0,2),b=name[s[i]];
        if(a==b)
            continue;
        res+=cnt[a+b];
    }
    cout<<res/2<<endl;
}

我是直接把“故乡名+城市前两个字母”作为一个整体进行计数,这样对于一个字符串s,它的故乡为name[s],只需加上字符串"s前两个字母+s的故乡"的数量就可以了,感觉挺对的,结果只有1,3AC?

2024/4/29 23:56
加载中...