博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4739 : 定向越野
阅读量:5964 次
发布时间:2019-06-19

本文共 1429 字,大约阅读时间需要 4 分钟。

起点/终点向每个圆的切点连边。

任意两个圆的公切点之间连边。

同一圆上相邻两个关键点之间连边。

然后Dijkstra求最短路即可,时间复杂度$O(n^3)$。

注意判边可行性的时候要忽略这条边来源的圆,可以提高精度。

 

#include
#include
#include
#include
#include
using namespace std;const int N=510,M=1100000;const double eps=1e-6,PI=acos(-1.0);inline double sqr(double x){return x*x;}struct P{ double x,y; P(){x=y=0;} P(double _x,double _y){x=_x,y=_y;} P operator+(const P&v)const{return P(x+v.x,y+v.y);} P operator-(const P&v)const{return P(x-v.x,y-v.y);} P operator*(double v)const{return P(x*v,y*v);} P operator/(double v)const{return P(x/v,y/v);} double operator*(const P&v){return x*v.x+y*v.y;} double len(){return hypot(x,y);} double len_sqr(){return x*x+y*y;} P rotate(double c)const{return P(x*cos(c)-y*sin(c),x*sin(c)+y*cos(c));} P trunc(double l){return(*this)*l/len();} void read(){scanf("%lf%lf",&x,&y);}}a[M];int n,cnt,i,j,cp[N],pool[N][2205];double w[M];inline bool cmp(int x,int y){return w[x]
-eps&&(c-b)*(a-b)>-eps)return sqr(cross(c-a,b-a))-rr*(b-a).len_sqr()<-eps; if((c-a).len_sqr()-rr<-eps)return 1; return (c-b).len_sqr()-rr<-eps; }}b[N];namespace G{const int MAXE=M*3;int g[M],v[MAXE],nxt[MAXE],ed;double w[MAXE],d[M];typedef pair
P;priority_queue

,greater

>q;inline void add(int x,int y,double z){v[++ed]=y;w[ed]=z;nxt[ed]=g[x];g[x]=ed;}inline void ext(int x,double y){if(y+eps

  

转载地址:http://rgvax.baihongyu.com/

你可能感兴趣的文章
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
深入理解Java的接口和抽象类
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
<气场>读书笔记
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>