习题: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;
}

posted @ 2020-05-03 22:51  loney_s  阅读(217)  评论(0)    收藏  举报