P3405 [USACO16DEC]Cities and States S 【map使用】
题目
https://www.luogu.com.cn/problem/P3405
思路
该题使用map十分方便,但是map的使用我忘了…………
int i = m[key]; 表示m[key]中value的个数
代码
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<map> using namespace std; map<int,int>list[200005]; int change(string a) { return (a[0]-64) * 26 + (a[1]-64); } int main() { int n; scanf("%d", &n); int ans = 0; for (int i = 0; i < n; i++) { string a, b; cin >> a >> b; int aa = change(a.substr(0,2)); int bb = change(b); ans += list[bb][aa];//加上与自己对称的bb aa节点的个数(刚开始肯定是0,但是当轮到与自己对称的时候就会加一) if (aa == bb)ans -= list[aa][aa];//减去来自同一省的 list[aa][bb]++;//这个节点的个数加一 } printf("%d", ans); }