Content

给定 \(n\) 个数 \(a_1,a_2,\dots,a_n\),求有多少个二元组 \((i,j)\) 满足:

  • \(i<j\)。
  • \(a_j-a_i=j-i\)。

数据范围:\(t\) 组数据,\(1\leqslant a_i\leqslant n,\sum n\leqslant 2\times 10^5\),\(1\leqslant t\leqslant 10^4\)。

Solution

很简单的一道题目。

我们将题目中的这个等式稍微移项一下就可以得到 \(a_i-i=a_j-j\)。然后这个题目就可以转化了。我们只需要边输入当前的 \(a_i\),边加上 \(a_i-i\) 在前面 \(i-1\) 个数当中出现的次数,更新 \(a_i-i\) 出现的次数即可得到答案。计数器可以用 map 实现。

Code

int a[200007];

int main() {
MT {
map<int, int> vis;
int n = Rint; ll ans = 0;
F(int, i, 1, n) a[i] = Rint, ans += vis[a[i] - i], vis[a[i] - i]++;
println(ans);
}
return 0;
}

最新文章

  1. Samba文件服务器详细配置步骤
  2. DevExpress主从表 按组分页一组不足一页为一页--以此记录
  3. Angular数据双向绑定
  4. Codeforces Round #354 (Div. 2) C. Vasya and String
  5. Git的分支与合并
  6. keyset与entryset
  7. R的数据图形
  8. Swagger服务API治理详解
  9. Node.js创建服务器和模拟客户端请求
  10. day02 运算符
  11. cpp 标准库
  12. django 定义文章url
  13. mybatis-spring 集成
  14. 实验三:敏捷开发与XP实践
  15. 关于block的回调使用-防止内存泄露问题
  16. MySQL常见架构的应用
  17. awk多列匹配
  18. Kubuntu上截屏的小技巧
  19. sqlserver 数据查询效率优化
  20. web之HTTP协议

热门文章

  1. 【AGC板刷记录】
  2. Matlab指针数组
  3. Python中pymysql基本使用
  4. 54. Flatten Binary Tree to Linked List
  5. 巩固javaweb的第二十天
  6. git 日志技术
  7. redis安装与简单实用
  8. Linux基础命令---slabtop
  9. 01_ubantu国内软件源配置
  10. 【Java 8】方法引用