这是……比量p并用交点连接中心不上弧。在于:它至p距离。是不是p与端点之间的最短距离

#include<iostream>
#include<map>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
const double pi=acos(-1.0);
struct dot
{
double x,y;
dot(){}
dot(double a,double b){x=a;y=b;}
dot operator +(dot a){return dot(x+a.x,y+a.y);}
dot operator -(dot a){return dot(x-a.x,y-a.y);}
dot operator *(double a){return dot(x*a,y*a);}
double operator *(dot a){return x*a.y-y*a.x;}
dot operator /(double a){return dot(x/a,y/a);}
double operator /(dot a){return x*a.x+y*a.y;}
bool operator ==(dot a){return x==a.x&&y==a.y;}
dot norv(){return dot(-y,x);}
dot univ(){double a=mod();return dot(x/a,y/a);}
dot ro(double a){return dot(x*cos(a)-y*sin(a),x*sin(a)+y*cos(a));}
double mod(){return sqrt(x*x+y*y);}
double dis(dot a){return sqrt(pow(x-a.x,2)+pow(y-a.y,2));}
friend istream & operator >> (istream &is,dot &a)
{
is>>a.x>>a.y;
return is;
}
friend ostream & operator << (ostream &os,dot a)
{
os<<a.x<<" "<<a.y;
return os;
}
};
dot o,a,b,c,p;
double r;
void cg()
{
dot A,B,C;
A=a-o;
B=b-o;
C=c-o;
if(A*B<0)
{
if(A*C<0&&B*C>0)
return;
}
else
{
if(!(A*C>0&&B*C<0))
return;
}
swap(a,c);
}
double work()
{
dot A,B,C;
A=a-o;
B=p-o;
C=c-o;
if(A*B<0)
{
if(A*C<0&&B*C>0)
return fabs(r-p.dis(o));
}
else
{
if(!(A*C>0&&B*C<0))
return fabs(r-p.dis(o));
}
return min(p.dis(a),p.dis(c));
}
void cor()
{
double A,B,C,D,E,F,G,H,I;
A=2*(a.x-b.x);
B=2*(a.y-b.y);
C=pow(a.x,2)-pow(b.x,2)+pow(a.y,2)-pow(b.y,2);
D=2*(a.x-c.x);
E=2*(a.y-c.y);
F=pow(a.x,2)-pow(c.x,2)+pow(a.y,2)-pow(c.y,2);
G=dot(A,D)*dot(B,E);
H=dot(C,F)*dot(B,E);
I=dot(A,D)*dot(C,F);
o=dot(H/G,I/G);
r=o.dis(a);
}
int main()
{
int jishu=0;
double ans;
while(cin>>a>>b>>c>>p)
{
cor();
cg();
ans=work();
printf("Case %d: %.3f\n",++jishu,ans);
}
}

1503: 点到圆弧的距离

Time Limit: 1 Sec  Memory Limit:
128 MB  Special Judge

Submit: 37  Solved: 9

[Submit][Status][Web
Board
]

Description

输入一个点P和一条圆弧(圆周的一部分),你的任务是计算P到圆弧的最短距离。

换句话说。你须要在圆弧上找一个点,到P点的距离最小。

提示:请尽量使用精确算法。相比之下,近似算法更难通过本题的数据。

Input

输入包括最多10000组数据。每组数据包括8个整数x1, y1, x2, y2, x3, y3, xp, yp。圆弧的起点是A(x1,y1),经过点B(x2,y2),结束位置是C(x3,y3)。点P的位置是 (xp,yp)。输入保证A, B, C各不同样且不会共线。

上述全部点的坐标绝对值不超过20。

Output

对于每组数据,输出測试点编号和P到圆弧的距离,保留三位小数。你的输出和标准输出之间最多能有0.001的误差。

Sample Input

0 0 1 1 2 0 1 -1
3 4 0 5 -3 4 0 1

Sample Output

Case 1: 1.414
Case 2: 4.000

HINT

Source

版权声明:本文博客原创文章。博客,未经同意,不得转载。

csu 1503: 点弧之间的距离-湖南省第十届大学生计算机程序设计大赛的更多相关文章

  1. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  2. 湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心

    2007: Football Training Camp[原创-转载请说明] Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 1 ...

  3. 【模拟】CSU 1807 最长上升子序列~ (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1807 题目大意: 给你一个长度为N(N<=105)的数列,数列中的0可以被其他数 ...

  4. 【树状数组】CSU 1811 Tree Intersection (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1811 题目大意: 一棵树,N(2<=N<=105)个节点,每个节点有一种颜 ...

  5. 【贪心】CSU 1809 Parenthesis (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 题目大意: 给一个长度为N(N<=105)的合法括号序列.Q(Q<= ...

  6. 【最短路】【数学】CSU 1806 Toll (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1806 题目大意: N个点M条有向边,给一个时间T(2≤n≤10,1≤m≤n(n-1), ...

  7. 【数学】CSU 1810 Reverse (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1810 题目大意: 一个长度为N的十进制数,R(i,j)表示将第i位到第j位翻转过来后的 ...

  8. 【拓扑】【宽搜】CSU 1084 有向无环图 (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1804 题目大意: 一个有向无环图(DAG),有N个点M条有向边(N,M<=105 ...

  9. 【最短路】【STL】CSU 1808 地铁 (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1808 题目大意: N个点M条无向边(N,M<=105),每条边属于某一条地铁Ci ...

随机推荐

  1. 用PowerDesigner生成自定义建表语句

    原文:用PowerDesigner生成自定义建表语句 我们经常用PowerDesigner来进行数据库表结构的设计,并且设计出来的表比较直观的看出之间的相互关系,方便理解:但其自动生成的脚本并不一定符 ...

  2. c++日历改进版

    #include<iostream> # include<fstream> #include<time.h> #include<string> #inc ...

  3. Eclipse热键

    Eclipse编辑功能很强大.掌握Eclipse快捷功能.高开发效率.Eclipse中有例如以下一些和编辑相关的快捷键.     1. [ALT+/]     此快捷键为用户编辑的好帮手.能为用户提供 ...

  4. poj 1061 扩展欧几里德同余方程求解

    摘要写在一瞪眼. #include<iostream> using namespace std; long long exgcd(long long a,long long b,long ...

  5. 使用autoconf和automake生成Makefile文件(转)

    Makefile好难写 曾经也总结了一篇关于Makefile的文章<make和makefile的简单学习>.但是,总结完以后,发现写Makefile真的是一件非常痛苦的事情,的确非常痛苦. ...

  6. C++它tinyXML使用

    tinyXML一个非常好的操作C++图书馆,文件不大,但方法非常丰富.和apache的Dom4j能够披靡啊! 习惯了使用java类库的我看到这么丰富的c++类库,非常高兴!它使用非常easy.仅仅须要 ...

  7. ios崩溃日志1

    Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not loa ...

  8. Android开发学习总结——Android开发的一些相关概念(转)

    一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 Ÿ 3G指的是第三代移 ...

  9. 解决github访问问题

    github这是个好地方.但是,上不去就蛋疼. 今天github上不去,果断f12下,看下network.发现里面好多请求都是指向 github.global.ssl.fastly.net这个域名的, ...

  10. Cocos2d-x 手机游戏《疯狂的蝌蚪》资源 “开源” win32+安德鲁斯+iOS三合一

    郝萌主倾心贡献,尊重作者的劳动成果,转载请注明出处 From郝萌主. 假设文章对您有所帮助.欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载 ...