题意:
如果两条鲨鱼在同一对角线上就会攻击对方(即使它们之间还隔着其他鲨鱼)
问共有几对?
思路:
对角线就两种情况
斜率为1:(x1 + y1) == (x2 + y2)
斜率为-1: (x1 - y1) == (x2 - y2) (数组下标不能为负,所以+1000)
代码如下:
#include <cstdio>
typedef long long ll;
int n, x, y;
int t[2010][2];//斜率为1或-1两种情况
int main()
{
scanf("%d", &n);
ll ans = 0;
for(int i = 0; i < n; ++i)
{
scanf("%d%d", &x, &y);
ans += t[x + y][0];
ans += t[x - y + 1000][1]; //x - y可能为负,所以+1000
t[x + y][0]++;
t[x - y + 1000][1]++;
}
printf("%I64d\n", ans);
return 0;
}