/*
求匹配数,遍历必定超时,
需要预先存一下相应行的数量,
最后对应每个列,找相等的行即可;
因为已知行不等于列,所以不必考虑特殊情况
*/
#include <iostream>
#include <map>
using namespace std;
int t,n,a[2][100005];
unsigned long long ans;
map<int,int> m;
int main()
{
ios::sync_with_stdio(false);
cin>>t;
while(t--)
{
m.clear();
cin>>n;
for(int j = 0 ; j < n; j++)
for(int i = 0 ; i < 2; i++)
cin>>a[i][j];
for(int i = 0 ; i < n ; i++)
{
m[a[0][i]]++;
}
ans = 0;
for(int i = 0 ; i < n; i++)
ans += m[a[1][i]];
cout<<ans<<endl;
}
return 0;
}

本文介绍了一种通过预处理行数据并使用映射表加速匹配过程的算法,避免了遍历超时的问题,适用于行数不等于列数的情况,提高了搜索效率。

617

被折叠的 条评论
为什么被折叠?



