1520D

统计满足(i<j)并且(a_j-a_i=j-i)的数对的数量。

变形,(a_j-j=a_i-i)

开哈希表,对原数组扫描一遍即可。

const int N=2e5+10;
int a[N];
int n;

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        cin>>n;

        unordered_map<int,int> mp;
        LL res=0;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            res+=mp[a[i]-i];
            mp[a[i]-i]++;
        }

        cout<<res<<endl;
    }
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14803872.html