习题:This Message Will Self-Destruct in 5s (atcoder)(杂题)

题目

给出一个序列\(A\)

\(a_i+a_j=j-i(j>i)\)的个数

思路

首先我们对式子进行一波处理

\(a_i+i=j-a_j\)

看到这个东西就很熟悉了

直接用map记忆化好了

代码

#include<iostream>
#include<map>
using namespace std;
map<int,int> f;
int n;
int a[200005];
long long tot;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        f[i-a[i]]++;
    }
    for(int i=1;i<=n;i++)
    {
        tot+=f[i+a[i]];
    }
    cout<<tot;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/loney-s/p/12824410.html
今日推荐