Comet OJ - Contest #15(B: 当我们同心在一起 )
题目描述
平面上有 nn 个坐标相异的点,请问当中有多少组非共线的三个点,这三个点的 外心 也在这 nn 个点之中?
输入描述
第一行有一个正整数 nn 代表平面上的点数。
接下来有 nn 行,当中的第 ii 行包含两个整数 x_i, y_i,xi,yi 代表第 i 个点的坐标是 (x_i, y_i)(xi,yi)。
1<=n<=2000
-10^9<=x,y<=10^9
若 i != j ,则(xi,yi)!=(xj,yj);
样例输入
5
0 0
-2 0
0 2
-1 1
2 0
样例输出
2

拿到这个题时,想着暴力,但是涉及到四个for,所以超时。比赛时就没搞出来,甚是遗憾。打完后看别人的AC代码,恍然大悟!
如果一个点到另外三个点的距离相等,那么这三个点肯定不共线,所以这点压根不需要去管了,直接去找一个点a1到另外点的距离,用map记录距离出现次数,如果出现某个距离出现次数K>=3,那么a1是这些点的外心,由于要选组合数,那么进行C K 3就可以了,从出现次数中选择三个就是一组,所以C K 3。
另外还有map迭代器的写法,总是忘
#include<cstring>
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
const int maxn = 2e3+;
typedef long long ll;
ll num[maxn];
struct node
{
ll x,y;
}st[maxn];
ll distance(ll x1,ll y1,ll x2, ll y2)
{
return ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
int n ;
cin>>n;
for(int i = ; i< n ; i++)
{
cin>>st[i].x>>st[i].y;
}
ll sum = ;
for(int i = ; i <n ;i ++)
{
map<ll,ll>mm;
for(int j = ; j<n ; j++)
{
if(i!=j)
{
ll s=distance(st[i].x,st[i].y,st[j].x,st[j].y);
// cout<<s<<endl;
mm[s]++;
}
}
map<ll,ll>::iterator it; //遍历map写法
for(it = mm.begin();it!=mm.end();it++)
{
if(it->second>=)
{
ll k = it->second;
// cout<<k<<endl;
sum+=k*(k-)*(k-)/; //C k 3
}
}
}
cout<<sum<<endl;
return ;
}
Comet OJ - Contest #15(B: 当我们同心在一起 )的更多相关文章
- Comet OJ - Contest #15 题解
传送门 \(A\) 咕咕 const int N=1005; int a[N],n,T; int main(){ for(scanf("%d",&T);T;--T){ sc ...
- Comet OJ Contest #15 D. 双十一特惠(困难版)
以 $d(x)$ 表示正整数 $x$ 的十进制表示的数位之和.熟知下列关于 $d(x)$ 的结论: $d(x) \equiv x \pmod{9}$.从而对于任意正整数列 $a_1, a_2, \do ...
- Comet OJ - Contest #2 简要题解
Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...
- Comet OJ - Contest #2简要题解
Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...
- Comet OJ - Contest #4--前缀和
原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...
- Comet OJ - Contest #11 题解&赛后总结
Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...
- Comet OJ - Contest #8
Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...
- Comet OJ - Contest #13-C2
Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...
- Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」
来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...
随机推荐
- QQ企业通----类库的设计----UDPSocket组件等
知识点: IPEndPoint 将网络端点表示为 IP 地址和端口号. UdpClient 提供用户数据报 (UDP) 网络服务. UdpClient对象.Close 关闭 UDP 连接. ...
- Django 利用第三方平台实现用户注册
前言: 登陆和注册功能是一个功能比较完善的网站必备的功能,其中涉及的业务逻辑实用性较强,所以我将Django的注册功能进行了总结,希望可以帮助大家.我们这次使用的第三方短息平台是云通信,当然你可以用其 ...
- Jmockit如何同时mock多个类的静态方法
使用Jmockit来mock类的静态方法,网上有很多mock单个类静态方法的例子.有使用Expectations,还有使用MockUp的. 但是如果想在一个测试方法中mock多个类的静态方法,该怎么写 ...
- uboot的环境变量
https://www.cnblogs.com/biaohc/p/6398515.html uboot 环境变量实现原理: 首先我们先要搞清楚uboot中环境变量的作用,uboot中环境变量的作用就是 ...
- Python入门必学知识,30万年薪Python工程师带你学
Python是一种计算机编程语言.计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能 ...
- Javascript获取当前鼠标在元素内的坐标定位
代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- ①java环境变量配置以及简单的dos框操作
DOS:英文全称Disk Operation System,即磁盘操作系统,是个人电脑上使用的一种操作系统,并曾是世界上最广泛使用的操作系统. JDK: 英文全称Java Development Ki ...
- 阿里云安装配置nginx
一.简介 Nginx是一款轻量级的网页服务器.反向代理服务器.相较于Apache.lighttpd具有占有内存少,稳定性高等优势.它最常的用途是提供反向代理服务. 二 .安装 1.准备工作 Nginx ...
- UVALive - 7752 Free Figurines
题意:有n个娃娃,如果大娃娃j直接套小娃娃i,则fa[i] = j.若fa[i] = 0,则该娃娃自由.给出每个娃娃初始的父亲,和改变后的父亲,在满足以下合法操作的条件下,问最少需要多少次变换. 1. ...
- Live555研究之一 源代码编译
Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现了对多种音视频编码格式的音视频数据的流化 ...