题目链接:http://codeforces.com/gym/102006/problem/I

题意:

一个机器人要移动n次,每次移动的路径已知,告诉你桌子的大小和机器人的大小,问你不让机器人移动出桌子的初始位置在哪里。

做法:

因为没有完全确定就不说了 留个板子就好、

#include<bits/stdc++.h>
using namespace std;
const double eps=1e-6;
const double Pi=acos(-1.0);
const int maxn=255;
struct node{double x,y;node(){}node(double x,double y):x(x),y(y){}
} P[maxn],c;
int n;
typedef node Vector;
int dcmp(double x)
{if (fabs(x)<eps) return 0;else if (x<0) return -1;else return 1;
}
Vector operator + (Vector a, Vector b){return Vector(a.x + b.x, a.y + b.y);
}
Vector operator - (Vector a, Vector b){return Vector(a.x - b.x, a.y - b.y);
}
Vector operator * (Vector a, double p){return Vector(a.x*p, a.y*p);
}
Vector operator / (Vector a, double p){return Vector(a.x / p, a.y / p);
}
bool operator == (const node &a, const node &b){return dcmp(a.x - b.x) == 0 && dcmp(a.y - b.y) == 0;
}
double Dot(Vector a, Vector b){//内积return a.x*b.x + a.y*b.y;
}
double Length(Vector a){//模return sqrt(Dot(a, a));
}
double Angle(Vector a, Vector b){//夹角,弧度制return acos(Dot(a, b) / Length(a) / Length(b));
}
double Cross(Vector a, Vector b){//外积return a.x*b.y - a.y*b.x;
}
Vector Rotate(Vector a, double rad){//逆时针旋转return Vector(a.x*cos(rad) - a.y*sin(rad), a.x*sin(rad) + a.y*cos(rad));
}
double Distance(node a, node b){//两点间距离return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y));
}
double Area(node a, node b, node c){//三角形面积return fabs(Cross(b - a, c - a) / 2);
}double lenth(node a) {return sqrt(Dot(a,a));}node rotate(node a,double t)    //向量旋转
{return node(a.x*cos(t)-a.y*sin(t),a.x*sin(t)+a.y*cos(t));
}node jiao(node p,node v,node q,node w)
//p+tv
//q+tw
{node u=p-q;double t=Cross(w,u)/Cross(v,w);return p+v*t;
}node get_c(node a,node b,node c)
{node p=(a+b)/2;    //ad中点node q=(a+c)/2;    //ac中点node v=rotate(b-a,Pi/2.0),w=rotate(c-a,Pi/2.0);   //中垂线的方向向量if (dcmp(Cross(v,w))==0)    //平行{if (dcmp(Length(a-b)+Length(b-c)-Length(a-c))==0)return (a+c)/2;if (dcmp(Length(b-a)+Length(a-c)-Length(b-c))==0)return (b+c)/2;if (dcmp(Length(a-c)+Length(c-b)-Length(a-b))==0)return (a+b)/2;}return jiao(p,v,q,w);
}void min_circular(){random_shuffle(P+1,P+n+1);    //随机化double r;c=P[1],r=0;//c 圆心//r 半径for (int i=2;i<=n;i++)if (dcmp(lenth(c-P[i])-r)>0)    //不在圆内{c=P[i],r=0;for (int j=1;j<i;j++)if (dcmp(lenth(c-P[j])-r)>0){c=(P[i]+P[j])/2.0;r=lenth(c-P[i]);for (int k=1;k<j;k++)if (dcmp(lenth(c-P[k])-r)>0){c=get_c(P[i],P[j],P[k]);r=lenth(c-P[i]);}}}
}
int main(){freopen("robots.in","r",stdin);int t;cin>>t;while(t--){double R,r,xx,yy;scanf("%d%lf%lf",&n,&R,&r);P[1]=node(0,0);n++;for(int i=2;i<=n;i++){scanf("%lf%lf",&xx,&yy);P[i]=P[i-1]+node(xx,yy);}min_circular();printf("%.8f %.8f\n",-c.x,-c.y);}
}

2018 ACM-ICPC, Syrian Collegiate Programming Contest I. Rise of the Robots 最小圆覆盖 模板相关推荐

  1. 2018 ACM ICPC Arabella Collegiate Programming Contest A

    Multiplication operation is not always easy! For example, it is hard to calculate 27 × 20 using your ...

  2. A - Multiplication Dilemma (思维)( 2018 ACM ICPC Arabella Collegiate Programming Contest)

    滴答滴答---题目链接 Multiplication operation is not always easy! For example, it is hard to calculate 27 × 2 ...

  3. (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest

    layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest author: "luow ...

  4. (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)

    layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题) author: " ...

  5. 2018 ACM-ICPC Syrian Collegiate Programming Contest(部分题解,待补)

    传送门 2018 ACM-ICPC 叙利亚大学生程序设计竞赛 Problem A: Hello SCPC 2018! 签到题 Problem B: Binary Hamming 简单题 #includ ...

  6. 2018 ACM-ICPC, Syrian Collegiate Programming Contest

    这是2018年叙利亚大学程序设计赛,星期一没什么比赛就拿这套题目练了一下手,在这里写几道我做出来的里面还算有点难度的题目(实力有限好多题看都没看) 比赛链接 http://codeforces.com ...

  7. 2015 ACM Syrian Collegiate Programming Contest

    A. My Friend of Misery 计算出答案的上下界即可. 时间复杂度$O(n)$. #include<bits/stdc++.h> using namespace std; ...

  8. 2018 ACM-ICPC Syrian Collegiate Programming Contest

    Problem H: Bugged System 思路来源**(https://blog.csdn.net/Mitsuha_/article/details/84455292)** Mr. Light ...

  9. GYM 2015 ACM Syrian Collegiate Programming Contest

    题目链接:http://codeforces.com/gym/101086 A My Friend of Misery B Brother Louie C Everything D Secure bu ...

最新文章

  1. 【FAQ】使用 LOAD 載入外部中文字檔 *.TXT, 中文字卻成為亂碼之解決
  2. 轻松学习Linux之自动执行任务
  3. C++ leetCode 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个
  4. 本地日志数据实时接入到hadoop集群的数据接入方案
  5. java学习(57):内部类
  6. LeetCode 1005. K 次取反后最大化的数组和
  7. 安全测试===sqlmap(零)转载
  8. LeetCode--75.颜色分类(三路快排,计数排序)
  9. 事件触发控制_基于事件触发机制的直流微电网多混合储能系统分层协调控制方法...
  10. Ext 介绍入门之 Templates(模板)
  11. vue-router配置
  12. esp连接服务器的协议,【零知ESP8266教程】WIFI TCP协议通信 TCP服务器示例
  13. 世界强大的移动便携图形工作站介绍(轻便型便携工作站(PL系列)介绍)
  14. Unity Spine图层混合叠加效果不生效
  15. 所希望于劳工会的〔1〕
  16. 网站长期被挂马 访问者屡遭木马侵害
  17. 云计算企业商战宝典:一战定《输赢》
  18. android系列:第一篇 android开发常用命令集合,代码目录简介
  19. 2021年电工(初级)考试报名及电工(初级)复审模拟考试
  20. 如何成为专业大数据架构师?

热门文章

  1. 从mysql中查询关键字_mysql中查询常用的关键字
  2. k2677场效应管参数引脚_场效应管k790参数
  3. 5110. 近义词句子
  4. 想知道吗?CTO 比普通程序员强在哪?
  5. 嵌入式面试总结(持续更新)
  6. 2012 Tokyo Regional C. One-Dimensional Cellular Automaton 矩阵快速幂
  7. 集线器,路由器,交换机的作用和区别是什么?如何区分交换机,集线器,路由器?
  8. 主题 02:如何设计系统预案(Preplan)?
  9. aspx结尾文件网站的发布过程
  10. 用大家的力量来总结一个目录(众人拾柴火焰高)