题解
2024-08-05 08:10:21
发布于:上海
19阅读
0回复
0点赞
#include<iostream>
using namespace std;
int n;
const int N=2e5+25;
const int LARGE=2e7+14;
int num[N],bucket[LARGE],s;//由于双循环找索引对容易超时TLE,所以用桶来存储差值
//因为aj-ai=j-i,所以由等式的性质知只要判断aj-j=ai-i即可
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>num[i];
num[i]=num[i]-i+N;//这里考虑到减出来会有负数的情况,故加上一个很大的数,变成正的
s+=bucket[num[i]]++;//先取出桶内的数量,再存入桶中
}
cout<<s;
return 0;
}//预计得分:100
这里空空如也
有帮助,赞一个