给出两个点,找到过这两个点的等角螺线,并求出中间的螺线长

$c = \frac{b}{a}$

$p = a \times c^{\frac{\theta}{angle}}$

对弧线积分

#include <bits/stdc++.h>
using namespace std;
long double eps = 1e-;
struct Point {
long double x, y;
Point(long double _x = , long double _y = ) {
x = _x; y = _y;
}
Point operator - (const Point &b) {
return Point(x - b.x, y - b.y);
}
}a[];
long double Dot(Point &a, Point b) {
return a.x * b.x + a.y * b.y;
}
long double len(Point &a) {
return sqrt(Dot(a, a));
}
int cmp(long double x) {
if (fabs(x) < eps) return ; return eps > ? : -;
}
int main() {
for (int i = ; i <= ; ++ i) cin >> a[i].x >> a[i].y;
a[] = a[] - a[];
a[] = a[] - a[];
long double tmp = Dot(a[], a[]);
long double len1 = len(a[]), len2 = len(a[]);
if (cmp(tmp - len1 * len2) == ) {
long double ans = fabs(len1 - len2);
cout << fixed << setprecision() << ans << '\n';
return ;
}
auto sqr = [&](long double x) -> long double {
return x * x;
};
long double ang = acos(tmp / len1 / len2);
long double ans = ang * len1;
if (cmp(len1 - len2)) {
long double C = len2 / len1;
ans = (C - ) / log(C) * ans;
ans = ans * sqrt( + sqr(log(C) / ang));
}
cout << fixed << setprecision() << ans << '\n';
}

XV Open Cup named after E.V. Pankratiev. GP of Siberia-Swimming的更多相关文章

  1. XV Open Cup named after E.V. Pankratiev. GP of Tatarstan

    A. Survival Route 留坑. B. Dispersed parentheses $f[i][j][k]$表示长度为$i$,未匹配的左括号数为$j$,最多的未匹配左括号数为$k$的方案数. ...

  2. XV Open Cup named after E.V. Pankratiev. GP of America

    A. Area of Effect 首先最优解中必有一个点在圆的边界上. 若半径就是$R$,则枚举一个点,然后把剩下的事件极角扫描即可,时间复杂度$O(m(n+m)\log(n+m))$. 否则圆必然 ...

  3. XV Open Cup named after E.V. Pankratiev. GP of Three Capitals

    A. Add and Reverse 要么全部都选择$+1$,要么加出高$16$位后翻转位序然后再补充低$16$位. #include<stdio.h> #include<iostr ...

  4. XV Open Cup named after E.V. Pankratiev. GP of Central Europe (AMPPZ-2014)--J.Cave

    给你一棵树,现在有m个专家,每个专家计划从$a_i$走到$b_i$, 经过的距离不超过$d_i$,现在让你找一个点,使得所有专家的路途都能经过这个点 令$S_i$表示满足第i个专家的所有点,先检查1可 ...

  5. XV Open Cup named after E.V. Pankratiev. GP of Central Europe (AMPPZ-2014)--B.Petrol

    多源最短路+并查集 #include <bits/stdc++.h> using namespace std; #define rep(i, j, k) for (int i = int( ...

  6. XVI Open Cup named after E.V. Pankratiev. GP of Siberia

    A. Passage 枚举两个点,看看删掉之后剩下的图是否是二分图. #include <bits/stdc++.h> using namespace std ; const int MA ...

  7. XVII Open Cup named after E.V. Pankratiev. GP of Siberia, Division 1

    1. Ski race 枚举枚举倍数判断即可.时间复杂度$O(n\log m)$. #include<cstdio> #include<algorithm> using nam ...

  8. XV Open Cup named after E.V. Pankratiev Stage 6, Grand Prix of Japan Problem J. Hyperrectangle

    题目大意: 给出一个$d$维矩形,第i维的范围是$[0, l_i]$. 求满足$x_1 + x_2 + ...x_d \leq s$ 的点构成的单纯形体积. $d, l_i \leq 300$ 题解: ...

  9. XVI Open Cup named after E.V. Pankratiev. GP of Eurasia

    A. Nanoassembly 首先用叉积判断是否在指定向量右侧,然后解出法线与给定直线的交点,再关于交点对称即可. #include<bits/stdc++.h> using names ...

随机推荐

  1. 【函数参数】什么是*args和**kwargs?

    **args表示任何多个无名参数,它是一个tuple,Python将**args从开始到结束作为一个tuple传入函数 **kwargs表示关键字参数,它是一个dict,Python将**kwargs ...

  2. Windbg程序调试系列4-Live Debugging

    上篇博文中给大家分享了使用Windbg分析线程阻塞问题: Windbg程序调试系列3-线程阻塞问题 本篇中我们继续,跟大家分享附加进程实时调试-Live Debugging. 先说一下使用Windbg ...

  3. 解析搜狗实验室精简版数据:1、批量将.txt编码格式转化为utf8 2、解析提取数据

    在搜狗实验室里下载了精简版的数据,解压后是一个文件,里面有很多个.txt文档,里面编码格式都是ASCII.现需要将这些编码格式转化为utf-8,以下是python3语言编写的脚本,一般只需改变path ...

  4. arcgis for js symbol图标的变化

    需求是图标有hover效果 ,如下 思路 : 1.创建图片标记,并赋值: args.rendererArgs = new RenderArgs();     args.rendererArgs.typ ...

  5. Jmeter之Redis读写

    Jmeter之Redis读写 奔跑的小小鱼  关注  0.2 2019.03.21 18:25* 字数 1330 阅读 45评论 0喜欢 1 Jmeter插件访问Redis共有3种方式: 1)通过自已 ...

  6. Redis的持久化

    Redis的持久化有两种方式: RDB方式(默认支持):在指定的时间间隔内将内存中的数据集快照写入磁盘 优势 整个Redis数据库将只包含一个文件,对于文件备份来说是完美的,系统出现灾难性的故障时容易 ...

  7. python源码为何都是pass

    最近看Python代码  按照一个函数递进的看下去,最后发现,遇到很多源码什么逻辑都没写,仅仅以一个pass  结尾          但却能得到应该得到的结果,这点真的很奇怪,上网查找后 觉得下面的 ...

  8. new Date().getTime()和System.currentTimeMillis()的区别

    在Java中,new Date().getTime()和System.currentTimeMillis()都是用来获取当前时间的,并可以用DateFormat转成对应的时间格式,代码如下. impo ...

  9. 【js】版本号对比处理方案

    今天在处理一个bug问题,适配客户端版本:若版本号未达到,则不可运行该功能,若达到则可运行. 版本号规则如下:(一般统一为2个点,其他的是数字,版本号从高位到低位,首位越大则越大,首位相同则对比下一位 ...

  10. 【Django视图与网址进阶004】

    一.在网页上做加减法 1. 采用 /add/?a=4&b=5 这样GET方法进行 django-admin.py startproject zqxt_views cd zqxt_views p ...