博客
关于我
2020牛客暑期多校第二场 B - Boundary(简单计算几何)
阅读量:316 次
发布时间:2019-03-04

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


题解这样说:

在这里插入图片描述
但是我这样写了却过不了,可能是计算角度时浮点数的误差太大了,实际上主流的做法并不是从圆心角下手,而是根据三点共圆,因为必过原点,那么只需枚举另外的两个点,计算出圆心坐标,然后使用 m a p map map统计每次枚举有多少相同的圆心坐标

关于三点共圆求圆心,可以参考

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define fi first#define se second#define Vector Point#define pb push_back#define ins insert#define lowbit(x) (x&(-x))#define mkp(x,y) make_pair(x,y)#define mem(a,x) memset(a,x,sizeof a);typedef long long ll;typedef long double ld;typedef unsigned long long ull;typedef pair
P;typedef pair
pdd;const double eps=1e-8;const double pi=acos(-1.0);const int inf=0x3f3f3f3f;const ll INF=1e18;const int Mod=1e9+7;const int maxn=2e5+10;inline int dcmp(double d){ if(fabs(d)
0?1:-1;}inline int cmp(double x,double y){ return dcmp(x-y);}struct Point{ double x,y; Point(double a=0,double b=0):x(a),y(b){ } Vector operator + (Vector B){ return Vector(x+B.x,y+B.y); } Vector operator - (Point B){ return Vector(x-B.x,y-B.y); } Vector operator * (double d){ //数乘 return Vector(x*d,y*d); } double operator * (Vector B){ //数量积 return x*B.x+y*B.y; } Vector operator / (double d){ return Vector(x/d,y/d); } double operator ^ (Vector B){ //叉乘 return x*B.y-y*B.x; } bool operator < (const Point &b) const { if(dcmp(x-b.x)==0) return y
mp;pdd getCircleCenter(Point a,Point b,Point c){ double x=((a.x*a.x+a.y*a.y)*(b.y-c.y)+(b.x*b.x+b.y*b.y)*(c.y-a.y)+(c.x*c.x+c.y*c.y)*(a.y-b.y)) / (2.0*(a.x*(b.y-c.y)-a.y*(b.x-c.x)+b.x*c.y-c.x*b.y)); double y=((a.x*a.x+a.y*a.y)*(c.x-b.x)+(b.x*b.x+b.y*b.y)*(a.x-c.x)+(c.x*c.x+c.y*c.y)*(b.x-a.x)) / (2.0*(a.x*(b.y-c.y)-a.y*(b.x-c.x)+b.x*c.y-c.x*b.y)); return make_pair(x,y);}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); //ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); int n; scanf("%d",&n); for(int i=0;i

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

你可能感兴趣的文章
mysql 优化器 key_mysql – 选择*和查询优化器
查看>>
MySQL 优化:Explain 执行计划详解
查看>>
Mysql 会导致锁表的语法
查看>>
mysql 使用sql文件恢复数据库
查看>>
mysql 修改默认字符集为utf8
查看>>
Mysql 共享锁
查看>>
MySQL 内核深度优化
查看>>
mysql 内连接、自然连接、外连接的区别
查看>>
mysql 写入慢优化
查看>>
mysql 分组统计SQL语句
查看>>
Mysql 分页
查看>>
Mysql 分页语句 Limit原理
查看>>
MySql 创建函数 Error Code : 1418
查看>>
MySQL 创建新用户及授予权限的完整流程
查看>>
mysql 创建表,不能包含关键字values 以及 表id自增问题
查看>>
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
查看>>
MySQL 加锁处理分析
查看>>