Codeforces Round #341 (Div. 2)B - Wet Shark and Bishops
2016-02-04 15:30
239 查看
思路:维护主对角线和副对角线上的点的数量,然后加起来就好了
Description
Today, Wet Shark is given n bishops on a 1000 by 1000 grid. Both rows and columns
of the grid are numbered from 1 to 1000. Rows are numbered from top to bottom, while columns are numbered from left to right.
Wet Shark thinks that two bishops attack each other if they share the same diagonal. Note, that this is the only criteria, so two bishops may attack each other (according to Wet Shark) even if there is another bishop located between them. Now Wet Shark wants
to count the number of pairs of bishops that attack each other.
Input
The first line of the input contains n (1 ≤ n ≤ 200 000) — the number of bishops.
Each of next n lines contains two space separated integers xi and yi (1 ≤ xi, yi ≤ 1000) —
the number of row and the number of column where i-th bishop is positioned. It's guaranteed that no two bishops share the same position.
Output
Output one integer — the number of pairs of bishops which attack each other.
Sample Input
Input
Output
Input
Output
Hint
In the first sample following pairs of bishops attack each other: (1, 3), (1, 5), (2, 3), (2, 4), (3, 4) and (3, 5).
Pairs (1, 2), (1, 4),(2, 5) and (4, 5) do
not attack each other because they do not share the same diagonal.
#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <string> #include <set> #include <ctime> #include <cmath> #include <cctype> using namespace std; #define maxn 1010 #define LL long long int cas=1,T; LL dpl[maxn][maxn]; LL dpr[maxn][maxn]; int main() { int n; scanf("%d",&n); for (int i = 1;i<=n;i++) { int x,y; scanf("%d%d",&x,&y); dpl[x][y]=1; dpr[x][y]=1; } LL ans = 0; for (int i = 1;i<=1000;i++) for (int j = 1;j<=1000;j++) { if (dpl[i][j]) { ans+=dpl[i-1][j-1]; ans+=dpr[i-1][j+1]; } dpl[i][j]+=dpl[i-1][j-1]; dpr[i][j]+=dpr[i-1][j+1]; } printf("%lld\n",ans); //freopen("in","r",stdin); //scanf("%d",&T); //printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC); return 0; }
Description
Today, Wet Shark is given n bishops on a 1000 by 1000 grid. Both rows and columns
of the grid are numbered from 1 to 1000. Rows are numbered from top to bottom, while columns are numbered from left to right.
Wet Shark thinks that two bishops attack each other if they share the same diagonal. Note, that this is the only criteria, so two bishops may attack each other (according to Wet Shark) even if there is another bishop located between them. Now Wet Shark wants
to count the number of pairs of bishops that attack each other.
Input
The first line of the input contains n (1 ≤ n ≤ 200 000) — the number of bishops.
Each of next n lines contains two space separated integers xi and yi (1 ≤ xi, yi ≤ 1000) —
the number of row and the number of column where i-th bishop is positioned. It's guaranteed that no two bishops share the same position.
Output
Output one integer — the number of pairs of bishops which attack each other.
Sample Input
Input
5 1 1 1 5 3 3 5 1 5 5
Output
6
Input
3 1 1 2 3 3 5
Output
0
Hint
In the first sample following pairs of bishops attack each other: (1, 3), (1, 5), (2, 3), (2, 4), (3, 4) and (3, 5).
Pairs (1, 2), (1, 4),(2, 5) and (4, 5) do
not attack each other because they do not share the same diagonal.
相关文章推荐
- Linux 串口驱动设计一
- 大型网站系统架构的演化
- 大型网站的灵魂——性能
- linux shell 编程14 获取时间
- linux系统目录结构
- windows7下安装配置opengrok
- linux shell 编程 13 重定向
- linux shell 编程 12 特殊符号 “&” 以及和他的恩怨
- hadoop命令详解
- Linux下阅读MHT文件
- hdu 5195 DZY Loves Topological Sorting【拓扑排序+优先队列+邻接表】
- Nginx负载均衡配置实例详解
- hive show databases 报错 ERROR in metadata : metadata Exception
- eclipse集成tomcat运行web时提示引入jar包的类找不到的解决办法
- linux shell 编程11 特殊符号总结:$0 $1 $2 $# $* $@ $! $$ $?
- nginx 多站点配置方法集合
- Nginx反向代理和负载均衡部署指南
- 解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
- [openresty] hello world
- Google Webmasters 网站全新改版,完全支持中文