2020牛客暑期多校第二场 B - Boundary(简单计算几何)
发布日期:2021-05-07 02:28:39 浏览次数:16 分类:精选文章

本文共 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
上一篇:2020牛客暑期多校第二场 F - Fake Maxpooling(dp/单调队列)
下一篇:2020牛客暑期多校第二场 C - Cover the Tree(思维/贪心)

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年03月22日 13时53分22秒