博客
关于我
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 /*! 50100 ... */ 条件编译
查看>>
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>