AtCoder Beginner Contest 166 E.This Message Will Self-Destruct in 5s

AtCoder Beginner Contest 166 E.This Message Will Self-Destruct in 5s

題目鏈接
在這裏插入圖片描述
思維題,題意是找一對 (i,j)(i,j) 使得 ai+aj=jia_i+a_j=j-i,我們不妨設 i<ji<j,移項得:ajj=aiia_j-j=-a_i-i,很容易想到用 mapmap 存數,每次更新答案即可,AC代碼如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

main()
{
    int n;
    cin>>n;
    int a[n+1];
    map<int,int>m;
    ll ans=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        ans+=m[a[i]-i];
        m[-a[i]-i]++;
    }
    cout<<ans;
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章