题目点这
MAP 的映射
将A-B=C转化为 A-C=B
将每个数减C
再扫一遍数组 将所有映射次数想加
思路来源
(蒟蒻不会写题 只会看题解 嘤嘤嘤)
上代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
const int N=200005;
ll a[N],sum,i,n,m;
int main(){
map<ll,ll>q;
cin>>n>>m;
for(i=0; i<n; i++)
{
cin>>a[i];
q[a[i]]++;
a[i]-=m;
}
ll sum=0;
for(i=0; i<n; i++)
sum+=q[a[i]];
cout<<sum<<endl;
return 0;}