代码:
#include<bits/stdc++.h>
using namespace std;
#define N 200100
void solve()
{
map<int,int> a;
long long ans=0,n;
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
x=x-i;
ans+=a[x];
a[x]++;
}
cout<<ans<<endl;
return ;
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
思路:
a[ j ]−a[ i ] = j − i - - > a[ j ] - j == a[ i ] - i
输入数组时,将a[ i ] - i 计算出来,并计数
若当前a[ i ] - i =x , x值为h,则有h个数可以和当前的a[ i ]配组,答案ans增加h。