给定一个长度为 n 的整数序列 a1 , a2 , … , an。我们称一个二元组(i,j)是完美配对的,当且仅当 i<j 并且 ai−aj=j−i.求完美配对的二元组数目(与原先不同的是ai的数据范围变大了).
对于前 3 个测试点
1≤n≤103
对于后两个测试点
1≤n≤105
所有的测试点都满足
1≤ai≤109
输入格式:
1 | n |
输出格式:
输出完美配对的二元组数目
输入样例:
1 | 5 |
输出样例:
仅有一对二元组(1, 2)满足条件, 因为 3 - 2 = 2 - 1.
1 | 1 |
思路
思路与开营测试时一样
将n个数存入vector,若a[i]+i=a[j]+j,则a[i]与a[j]完美配对。于是需要标记a[i]+i,但是a[i]+i的数据过大,数组无法存储,需要使用unordered_map标记
代码
1 |
|