发现由于角的度数和边的长度有限制,那俩圆如果放得下的话,必然是塞在两个角里。

于是预处理n个圆心的位置(注意要判断那个圆会不会和其他的边界相交),然后n^2枚举俩角即可。

#include<cstdio>
#include<cmath>
using namespace std;
#define EPS 0.00000001
struct Point{double x,y;double length(){return sqrt(x*x+y*y);}
}a[2010];
typedef Point Vector;
Vector unit(Vector v){double l=v.length();return (Vector){v.x/l,v.y/l};
}
Vector operator - (const Point &a,const Point &b){return (Vector){a.x-b.x,a.y-b.y};
}
Vector operator + (const Point &a,const Point &b){return (Vector){a.x+b.x,a.y+b.y};
}
double dot(const Vector &a,const Vector &b){return a.x*b.x+a.y*b.y;
}
double Cross(const Vector &a,const Vector &b){return a.x*b.y-a.y*b.x;
}
Vector operator * (const double &K,const Vector &v){return (Vector){K*v.x,K*v.y};
}
int n;
Point calc(int I){double jiao=acos(dot(a[I+1]-a[I],a[I-1]-a[I])/(a[I+1]-a[I]).length()/(a[I-1]-a[I]).length());double d=4000.0/tan(jiao/2.0);double l=4000.0/sin(jiao/2.0);Point p1=a[I]+d*unit(a[I+1]-a[I]);Point p2=a[I]+d*unit(a[I-1]-a[I]);Point M=(Point){(p1.x+p2.x)/2.0,(p1.y+p2.y)/2.0};return a[I]+l*unit(M-a[I]);
}
double DisToSegment(Point P,Point A,Point B)
{Vector v1=B-A,v2=P-A,v3=P-B;if(dot(v1,v2)<EPS) return v2.length();else if(dot(v1,v3)>EPS) return v3.length();else return fabs(Cross(v1,v2))/v1.length();
}
Point yuanxins[2010];
bool can[2010];
int main(){
//  freopen("k.in","r",stdin);scanf("%d",&n);for(int i=1;i<=n;++i){scanf("%lf%lf",&a[i].x,&a[i].y);}a[++n]=a[1];for(int i=n;i>=1;--i){a[i+1]=a[i];}a[1]=a[n];++n;for(int i=2;i<n;++i){yuanxins[i]=calc(i);can[i]=1;for(int j=2;j<n;++j){
//          double tmp=DisToSegment(yuanxins[i],a[j],a[j+1]);if(DisToSegment(yuanxins[i],a[j],a[j+1])-4000.0<-EPS){can[i]=0;break;}}}for(int i=2;i<n;++i){if(Cross(a[i+1]-a[i],a[i]-a[i-1])>EPS && can[i]){Point A=yuanxins[i];for(int j=i+1;j<n;++j){if(Cross(a[j+1]-a[j],a[j]-a[j-1])>EPS && can[j]){Point B=yuanxins[j];
//                  double tmp=(B-A).length();if((B-A).length()-8000.0>-EPS){printf("%.8f %.8f\n%.8f %.8f\n",A.x,A.y,B.x,B.y);return 0;}}}}}puts("impossible");return 0;
}

转载于:https://www.cnblogs.com/autsky-jadek/p/7198403.html

【计算几何】【预处理】【枚举】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem K. Kiwi Trees...相关推荐

  1. 【枚举】【SPFA】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem I. Iron and Coal

    那个人派出的队伍的行走的路径一定前半程是重合的,后半程分叉开来. 于是预处理每个点离1号点的最短路,到最近的铁的最短路,到最近的煤的最短路.(三次BFS / SPFA)然后枚举分岔点,尝试更新答案即可 ...

  2. Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维

    传送门 文章目录 题意: 思路: 题意: 有nnn个人,每个人都有一个能力值bib_ibi​以及他会的技能aia_iai​,当他会第xxx个技能的时候,aia_iai​的第xxx位是111.定义当xx ...

  3. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    U3D笔记11:47 2016/11/30-15:15 2016/12/19 技术BLOG:http://www.unity.5helpyou.com/2373.html#comment-43108 ...

  4. Windows Server 2016及System Center 2016正式商用

    Windows Server 2016  及 System Center 2016 现已正式商用.作为微软全新一代的服务器操作系统和数据中心管理平台,它们将为企业 IT 带来全面的性能与安全性提升:为 ...

  5. 翻译 Windows Server 2016和System Center 2016 技术预览版4 使创新更容易

    英文标题:Make innovation easier with Windows Server 2016 and System Center 2016 Technical 中文标题:Windows S ...

  6. 清华大学计算机系2016名单,关于电子系2016 级、2017 级本科生分流至微纳电子系学生名单公示...

    关于电子系2016 级.2017 级本科生分流至微纳电子系学生名单公示 经电子系2016 级.2017 级学生本人申报专业志愿.教务处审批,拟定26 名同学从电子系分流至微纳电子系,现予以公示. 学号 ...

  7. [2016湘潭邀请赛 A. 2016] 大数取模+循环节

    [2016湘潭邀请赛 A. 2016] 大数取模+循环节 1. 题目链接 XTU OnlineJudge : [2016湘潭邀请赛 A. 2016] 2. 题意描述 [图片看不清可以放大.] 给定一个 ...

  8. Visio 2016 MSI 与 Office 2016 Click-to-Run 冲突导致无法安装的解决方法

    Visio 2016 MSI 与 Office 2016 Click-to-Run 冲突导致无法安装的解决方法 问题描述 已安装:Office 2016 家庭与学生版 64 bit(Click-to- ...

  9. HDU5128The E-pang Palace(计算几何暴力枚举)

    The E-pang Palace 题解:预处理出所有矩形,然后枚举满足情况的两两矩形即可.因为是矩形,所以我们只需要存对角的两个点即可.就是要注意嵌套也是满足的. 代码 #include<bi ...

最新文章

  1. linux 如何禁用账号和解除禁用账号
  2. 最常见核心的决策树算法—ID3、C4.5、CART(非常详细)
  3. [转]Android中程序与Service交互的方式——交互方式
  4. 【任务脚本】0601更新autojs客户端,回顾之前战绩,注意事项淘宝618活动领喵币autojs脚本,向大神致敬...
  5. Egret IDE中搜索,过滤文件,只搜索.ts
  6. mysql 查询 系统字段 自然日_Mysql查询用户留存/留存率问题用户n日(内)留存、某日新增用户n日(内)留存...
  7. 个人空间风格模版php,home.php这个页面风格模板在哪里修改?答案:space_home.html...
  8. 杭电1556 Color the ball
  9. Android Studio如何打jar包
  10. Divisibility题解
  11. 推荐算法之协同过滤算法详解(原理,流程,步骤,适用场景)
  12. 向量数量积公式_向量的数量积公式大全
  13. 十九个国内外主流的三维GIS软件(转)
  14. java 某年某月的天数_Java练习 SDUT-1160_某年某月的天数
  15. Tensorflow中 tf.train.exponential_decay() 等实现学习率衰减
  16. Python解决SSL不可用问题
  17. 蒙城县有4000多年,夏为禹贡豫州之域
  18. 埃尔米特插值法在MATLAB中的应用
  19. 如何成功搭建一个游戏平台?
  20. vim编辑修改二进制文件以及对于二进制文件中幻数测试

热门文章

  1. Rails当你运行一个数据库回滚错误:ActiveRecord::IrreversibleMigration exception
  2. getchar()和EOF
  3. WorkFlow4.0--入门到精通系列-专题索引
  4. 闲谈网络运维管理的那些事儿(之三)
  5. python-pcl
  6. Python3 函数笔记
  7. 简单明了区分escape、encodeURI和encodeURIComponent
  8. iOS开发之线程间的MachPort通信与子线程中的Notification转发
  9. Android反编译 -- 错误代码还原
  10. 方差与样本方差、协方差与样本协方差