CF一个远古时期的计算几何题(正多边形)

简介: CF一个远古时期的计算几何题(正多边形)

第一次正式写计算几何,知道了fmod这个东西,知道了外接圆的圆心角的最小份由以三角形三条边每个弦为圆心角的最大公约数。

看带佬的题解:详细的题解

原题链接

#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
# define rep(i,be,en) for(int i=be;i<=en;i++)
# define pre(i,be,en) for(int i=be;i>=en;i--)
#define ll long long
#define endl "\n"
#define LOCAL
#define pb push_back
#define int long long
typedef pair<ll, ll> PII;
#define eb emplace_back
#define sp(i) setprecision(i)
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const double eps = 1e-2, PI = acos(-1.0);
struct Point
{
  double x;
  double y;
} p[3];
double len[3], a[3];
double getlen(Point a, Point b)
{
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
double gcd(double a, double b)
{
  if (fabs(b) < eps)
    return a;
  if (fabs(a) < eps)
    return b;
  return gcd(b, fmod(a, b));
}
void solve()
{
  for (int i = 0; i < 3; i++)
    {
      cin >> p[i].x >> p[i].y;
    }
  for (int i = 0; i < 3; i++)
    {
      len[i] = getlen(p[i], p[(i + 1) % 3]);
    }
  double P = (len[0] + len[1] + len[2]) / 2;
  double s = sqrt(P * (P - len[0]) * (P - len[1]) * (P - len[2]));
  double R = len[0] * len[1] * len[2] / (4 * s);
  for (int i = 0; i < 2; i++)
    {
      a[i] = acos(1 - len[i] * len[i] / (2 * R * R));
    }
  a[2] = 2 * PI - a[1] - a[0];
  double t = gcd(a[0], gcd(a[1], a[2]));
  double ans = R * R * PI * sin(t) / t;
  cout << fixed << setprecision(6) << ans << endl;
}
signed main()
{
  //#ifdef LOCAL
  //freopen("data.in.txt","r",stdin);
  //freopen("data.out.txt","w",stdout);
  //#endif
  int __ = 1;
  //cin >> __;
  while (__--)
    {
      solve();
    }
  return 0;
}


目录
相关文章
|
7月前
|
机器学习/深度学习 数据挖掘 Go
JCR一区5.2分|RNA修饰如何打开格局,一篇非肿瘤m6A带入门
这篇文章探讨了m6A修饰在绝经后骨质疏松症(PMOP)中的作用,通过生物信息学分析和实验验证,鉴定了7个m6A调节剂作为诊断标志物。研究发现这些调节剂可能影响疾病的亚型分类,并提出了m6A模式作为潜在的治疗靶点。文章提供了PMOP新的分子机制理解,为未来诊断和免疫治疗策略提供了依据。
90 0
|
4月前
|
程序员 开发者
面对XY问题,PM该何去何从
面对XY问题,PM该何去何从
|
7月前
|
Java 数据挖掘 Go
JCR一区7.7分|单细胞联合bulk-seq的线粒体自噬,分析方法都挺好
这篇文章介绍了研究者通过分析单细胞和Bulk RNA测序数据,鉴定出18个与胃癌(GC)进展相关的线粒体自噬相关基因(MRG),并建立了基于这些基因的预后模型。研究发现GABARAPL2和CDC37可能是GC的预后标志物和潜在治疗靶点。此外,分析揭示了细胞间通讯模式和免疫浸润状态,暗示MRG可能影响GC的免疫治疗响应。整体而言,这项工作为GC的诊断和治疗提供了新见解。
136 0
|
人工智能 BI
CF1438B Valerii Against Everyone(考察数学分析问题)
CF1438B Valerii Against Everyone(考察数学分析问题)
70 0
|
编解码 人工智能 文字识别
连百年梗图都整明白了!微软多模态「宇宙」搞定IQ测试,仅16亿参数
连百年梗图都整明白了!微软多模态「宇宙」搞定IQ测试,仅16亿参数
161 0
CF1605D. Treelabeling(二分图 博弈)
CF1605D. Treelabeling(二分图 博弈)
93 0
[#4练习赛]选代表
传智专修学院竞选学生代表,获得了 $n$($1 \le n \le 20000$)个提名票,每个提名票都写了一个学号(从 $1$ 到 $100$ 的整数)。现在要求给根据提名票整理出竞选人。将这些提名票依次排列,只保留这个学号第一次出现的位置,删除同一学号其余出现的位置。然后输出这些学号。
GEE基础学习——EVI指数计算
GEE基础学习——EVI指数计算
708 0
GEE基础学习——EVI指数计算
|
算法
【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★
【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★
554 0
【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★
|
机器学习/深度学习 Web App开发 人工智能
LeCun带两位UC伯克利华人博士提出「循环参数生成器」,一个参数重复用!
近日,LeCun带领两位来自UC伯克利的华人博士共同发表了一份关于如何减少参数冗余问题的论文,团队提出的RPG循环参数生成器,在减少骨干参数的同时,也依然能获得比SOTA更好的性能。
158 0
LeCun带两位UC伯克利华人博士提出「循环参数生成器」,一个参数重复用!