2507 城市和州 map
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 2e5 + 10; // 使用map来记录每个城市前两个字母和州的组合出现的次数 map<string, int> vis; string a, b; int n, ans; int main() { // 读取城市的数量 cin >> n; for (int i = 1; i <= n; i++) { // 读取城市名称和州的简称 cin >> a >> b; // 取城市名称的前两个字母 a = a.substr(0, 2); // 如果城市名称的前两个字母和州的简称不同 if (a != b) { // 累加特殊对的数量 ans += vis[a + b]; } // 记录州的简称和城市名称前两个字母的组合出现的次数 vis[b + a]++; } // 输出特殊对的数量 cout << ans; return 0; }