昨天看这题就在想怎么和最小圆覆盖结合一起,不过没信心写 = =。。

昨晚搜题解,有人发布官方标程了,还真是结合最小圆覆盖了。

我还是对最小圆覆盖理解不好啊。。。把我的改了改,就过了。

二者一起算,如果碰到在m那个集合里的点,如果在内部,就让它作为边界点即可。

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits.h>
#include <string.h>
#include <string>
#include <algorithm>
#define MID(x,y) ( ( x + y ) >> 1 )
#define L(x) ( x << 1 )
#define R(x) ( x << 1 | 1 )
#define FOR(i,s,t) for(int i=s; i<t; i++)
#define BUG puts("here!!!")using namespace std;const int MAX = 20010;
struct point { double x,y;bool f;void get() { scanf("%lf%lf", &x, &y); }
};
point p[MAX];
const double eps = 1e-6;
bool dy(double x,double y)  {   return x > y + eps;}    // x > y
bool xy(double x,double y)  {   return x < y - eps;} // x < y
bool dyd(double x,double y) {   return x > y - eps;} // x >= y
bool xyd(double x,double y) {   return x < y + eps;}    // x <= y
bool dd(double x,double y)  {   return fabs( x - y ) < eps;}  // x == y
double disp2p(point a,point b) //  a b 两点之间的距离
{return sqrt( ( a.x - b.x ) * ( a.x - b.x ) + ( a.y - b.y ) * ( a.y - b.y ) );
}
point circumcenter(point a,point b,point c)
{point ret;double a1 = b.x - a.x, b1 = b.y - a.y, c1 = (a1*a1 + b1*b1)/2; double a2 = c.x - a.x, b2 = c.y - a.y, c2 = (a2*a2 + b2*b2)/2; double d = a1 * b2 - a2 * b1; ret.x = a.x + (c1*b2 - c2*b1)/d; ret.y = a.y + (a1*c2 - a2*c1)/d; return ret;
}
void min_cover_circle(point p[],int n,point &c,double &r)
{random_shuffle(p,p+n);// #include <algorithm>c = p[0]; r = 0;for(int i=1; i<n; i++)if( dy(disp2p(p[i],c),r) && p[i].f || xy(disp2p(p[i],c),r) && !p[i].f ){c = p[i];r = 0;for(int k=0; k<i; k++)if( dy(disp2p(p[k],c),r) && p[k].f || xy(disp2p(p[k],c),r) && !p[k].f ){c.x = (p[i].x + p[k].x)/2;c.y = (p[i].y + p[k].y)/2;r = disp2p(p[k],c);for(int j=0; j<k; j++)if( dy(disp2p(p[j],c),r) && p[j].f || xy(disp2p(p[j],c),r) && !p[j].f ){                            // 求外接圆圆心,三点必不共线 c = circumcenter(p[i],p[k],p[j]);r = disp2p(p[i],c);}}}
}int main()
{int n, m;while( ~scanf("%d%d", &n, &m) ){FOR(i, 0, n){p[i].get();p[i].f = true;}FOR(i, n, n+m){p[i].get();p[i].f = false;}point c; double r;min_cover_circle(p, n+m, c, r);printf("%.3lf %.3lf\n%.3lf\n", c.x, c.y, r);}return 0;
}

hdu 3995 Perfect Faceless Void相关推荐

  1. linux nDPI 协议检测 源码分析

    关于nDPI的基本功能就不在这介绍了,有兴趣了解的读者可以阅读官方的快速入门指南:https://github.com/ntop/nDPI/blob/dev/doc/nDPI_QuickStartGu ...

  2. 【C语言进阶深度学习记录】六 C语言中的分支语句

    文章目录 1 if 语句的分析 1.1 if 语句中零值比较的注意点 2 switch 语句的分析 3 if 与switch语句使用代码案例分析 4 if语句与switch语句的互换 5 总结 1 i ...

  3. switch 条件判断_C语言学习第7篇---C语言三大结构之一判断结构

    if语句分析 1.if语句用于根据条件选择执行语句 2.else不能独立存在且总是与它最近的if想匹配 3.else语句后可以接其他if语句 if语句中零值比较的注意点 ---bool型变量应该直接出 ...

  4. Creating a Pager Control for ASP.NET以及Dino Esposito 分页组件的一个 Bug

    我在使用MSDN 上 Dino Esposito 的分页组件对DataGrid进行操作的时候,发现在 PagingMode="NonCached" 时候,最后一页的时候,会报错误: ...

  5. 杭电OJ分类题目(2)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...

  6. C语言深度剖析笔记1

    关键字的秘密 数据类型 什么是数据类型? 数据类型可以理解为固定内存大小的别名; 数据类型是创建变量的模子(花形的,圆形的,星形的等等); char 1byte short 2byte int 4by ...

  7. 【NDPI】源码解析之深度包检测分析(一)

    (Albert.2019.4.28) 文章目录: 前言: 正文: 一.nDPI深度包检测流程: 二.重要结构体的源码分析 1.ndpi_ethdr.ndpi_iphdr.ndpi_tcphdr.ndp ...

  8. 国嵌C语言总结(1-5)

    国嵌一: 什么是数据类型? 数据类型是固定内存大小的别名,是创建变量的模子: 变量的本质? 变量是一段实际连续存储空间的别名: 程序通过变量来申请并命名存储空间: 通过变量的名字可以使用存储空间. L ...

  9. (HDU)1334 -- Perfect Cubes (完美立方)

    题目链接:http://vjudge.net/problem/HDU-1334 暴力枚举,我不知道我的优化是不是暴力里面最简单的... 1 #include <cstdio> 2 #inc ...

最新文章

  1. python写软件-Python是怎么编写软件的?
  2. Tomcat - 你该知道的Tomcat生产环境部署
  3. Python Django 学习笔记
  4. c++ 构造函数数组_从 JS 数组操作到 V8 array.js
  5. 群联固态硬盘修复工具_固态硬盘掉速修复小教程,SATA和NVMe协议通用
  6. Python工作笔记001---python3的print加括号_Python3中不存在raw_input( )了
  7. 更快更高更强大,这是英特尔AI助力长城修缮的新进展
  8. jieba分词工具的使用-python代码
  9. 如何快速入门 Python 爬虫
  10. 程序员版--致青春(一)——facejoking刷票工具(谈刷票原理)
  11. RMF模型评分制计算方法(2021/08/04)
  12. Rank Scores(分数排序)
  13. 哈工大2019年春算法设计与分析期末复习
  14. 如何在别的电脑上用自己的系统------在移动硬盘上装win10
  15. python函数初体验
  16. Semilogx 不是对数坐标
  17. Greenplum集群部署安装指南
  18. 【jar】Java Runtime recognizes class file versions up to 52.0
  19. 一文搞定python绘折线图(标题,自定义刻度范围,xy轴刻度值的大小,垂直xy轴的虚线,标签,图例)
  20. 武汉本地三大门户网站的分析和比较!

热门文章

  1. Win10卸载微软sql服务器,win10系统彻底卸载server 2008数据库的设置办法
  2. 25 岁,毕业写前端的这三年,多益网络java面试
  3. 解决Chrome无法自动同步书签
  4. 风场可视化与原理剖析
  5. 安卓配置正式包和测试包不同的名字、图标、同时安装,(极光配置测试和正式)
  6. layerui如何隐藏按钮?
  7. 浏览器英文快捷翻译工具~~有道词典
  8. 32位linux装64位rpm包,360浏览器提供rpm包(支持MIPS64)及32位deb包(兆芯)
  9. java分子分母的加减乘除_JAVA实现精确的加减乘除代码
  10. Python编程之Ubuntu下信号模块signal