【codeforces 650A】【思维】【容斥】【数学】【求n个点中两种距离相等的点对数】
时间:2019-01-19
本文章向大家介绍【codeforces 650A】【思维】【容斥】【数学】【求n个点中两种距离相等的点对数】,主要包括【codeforces 650A】【思维】【容斥】【数学】【求n个点中两种距离相等的点对数】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【链接】https://codeforces.com/problemset/problem/650/A
【一句话题解】求n个点中两种距离相等的点对数。SX U SY =SX+SY +SX ∩ SY,x,y分别排序,map记录点对,容斥算重
【代码】
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int maxn = 1e6 + 6;
int x[maxn], y[maxn];
int cmp(int a, int b) {
return a < b;
}
map<int, map<int,int> >mp,vis;
int main() {
int n;
while (~scanf("%d", &n)) {
for (int i = 0; i < n; i++) {
scanf("%d%d", &x[i], &y[i]);
mp[x[i]][y[i]]++;
}
ll ans = 0;
for (int i = 0; i < n; i++) {
if (mp[x[i]][y[i]]>1&&!vis[x[i]][y[i]])ans-= (mp[x[i]][y[i]]-1LL)*(mp[x[i]][y[i]])/2;
vis[x[i]][y[i]] = 1;
}
sort(x, x + n, cmp);
sort(y, y + n, cmp);
for (ll i = 0; i < n; i++) {
if (i!=0&&x[i] == x[i - 1])continue;
ll j = lower_bound(x, x + n, x[i] + 1)-x;
ans += (j - i - 1LL)*(j - i )/2;
}
for (ll i = 0; i < n; i++) {
if (i!=0&&y[i] == y[i - 1])continue;
ll j = lower_bound(y, y + n, y[i] + 1) - y;
ans += (j - i - 1LL)*(j - i )/2;
}
cout << ans << endl;
}
}
/*
3
1 1
7 5
1 5
*/
/*
6
0 0
0 1
0 2
-1 1
0 1
1 1
*/
/*
3
1 2
1 2
1 2
*/
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解Linux内核进程调度函数schedule()的触发和执行时机
- Linux下使用SSH远程执行命令方法收集
- 详解Centos7.2编译安装zabbix3.2(详细步骤)
- Linux下误删messages文件的找回方法
- 自制YUM仓库的步骤讲解
- 解决centos7中tomcat启动与本机访问问题
- centos6.5配置ssh免秘钥登陆执行pssh命令的讲解
- 使用PXE自动安装CentOS7.6的教程详解
- Ubuntu环境下SSH的安装及使用详解
- CentOS8 网卡配置文件
- Linux加载vmlinux调试
- Linux 中删除文本中的回车字符的方法
- 详解Linux下出现permission denied的解决办法
- Linux在丢失的情况下重置密码的教程
- Linux内核宏container_of的深度剖析