博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #345 (Div. 1) A - Watchmen 容斥
阅读量:6903 次
发布时间:2019-06-27

本文共 1945 字,大约阅读时间需要 6 分钟。

C. Watchmen

题目连接:

Description

Watchmen are in a danger and Doctor Manhattan together with his friend Daniel Dreiberg should warn them as soon as possible. There are n watchmen on a plane, the i-th watchman is located at point (xi, yi).

They need to arrange a plan, but there are some difficulties on their way. As you know, Doctor Manhattan considers the distance between watchmen i and j to be |xi - xj| + |yi - yj|. Daniel, as an ordinary person, calculates the distance using the formula .

The success of the operation relies on the number of pairs (i, j) (1 ≤ i < j ≤ n), such that the distance between watchman i and watchmen j calculated by Doctor Manhattan is equal to the distance between them calculated by Daniel. You were asked to compute the number of such pairs.

Input

The first line of the input contains the single integer n (1 ≤ n ≤ 200 000) — the number of watchmen.

Each of the following n lines contains two integers xi and yi (|xi|, |yi| ≤ 109).

Some positions may coincide.

Output

Print the number of pairs of watchmen such that the distance between them calculated by Doctor Manhattan is equal to the distance calculated by Daniel.

Sample Input

3

1 1
7 5
1 5

Sample Output

2

Hint

题意

有n个点,然后让你算出有多少对点的欧几里得距离等于曼哈顿距离

题解:

平方之后,显然只要,只要(xi-xj)==0或者(yi-yj)==0就满足题意了

然后容斥一发,x相等+y相等-xy相等就好。

代码

#include
using namespace std;map
x;map
y;map
,long long>xy;int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) { int X,Y; scanf("%d%d",&X,&Y); x[X]++; y[Y]++; xy[make_pair(X,Y)]++; } map
::iterator it; long long ans = 0; for(it=x.begin();it!=x.end();it++) { long long p = it->second; ans+=(p*(p-1)/2); } for(it=y.begin();it!=y.end();it++) { long long p = it->second; ans+=(p*(p-1)/2); } map
,long long>::iterator it2; for(it2=xy.begin();it2!=xy.end();it2++) { long long p = it2->second; ans-=(p*(p-1)/2); } cout<
<

转载地址:http://qlldl.baihongyu.com/

你可能感兴趣的文章
逻辑电路 - 晶体管Transistor
查看>>
《第十三章 高级指针话题》
查看>>
android jni——helloworld
查看>>
UML类图(转载)
查看>>
初到深圳面试分享(下)
查看>>
jQuery Pagination Ajax分页插件中文详解(转)
查看>>
Android Canvas saveLayerAlpha使用
查看>>
指针类型强制转换
查看>>
Asp.Net WebAPI传递json对象、后台手动接收参数
查看>>
MySQL常用命令大全
查看>>
查看Android应用签名信息
查看>>
Solr官方文档翻译-About & Getting Started
查看>>
MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录...
查看>>
优化中的subgradient方法
查看>>
fastDFS 一二事 - 简易服务器搭建(单linux)
查看>>
Elasticsearch初步使用(安装、Head配置、分词器配置)
查看>>
【转】java中&和&&的区别和联系
查看>>
ubuntu 键盘布局修改
查看>>
http://blog.csdn.net/rosten/article/details/17068285
查看>>
使用MyBatis搭建一个访问mysql数据库的简单示例
查看>>