我的思路很暴力

直接枚举斜率[-100000,0]之间,然后设置一个非常远的直线,对所有点扫一遍,确定一个离这条直线最近的点P。

用点P和斜率k来创建cable,并用cable的距离来relax答案。

现在问题在于,怎么来枚举k,如果直接枚举,设置步长的话,不是超时就是精度不足。

因此我们需要想个办法来枚举k。

我们先枚举0,10000,20000,...,100000找到一个最优答案,假设是20000

那么我们再枚举21000,22000.....,29000以及19000,18000,...11000这些数,找到一个最优的,这样一直找下去,总会找到k。

枚举的时间复杂度为O(10*迭代深度)

具体原理看我下一篇文章。

这道题目卡精度,注意了

代码:

#include <cstdio>
#include <cmath>
using namespace std;
const int maxn = 1e6+7;
const double INF = 1e18;
struct Point{
    int x,y;
}Ps[maxn];
int n;
int check(double k){
    double t = INF;
    int mark = 0;
    for(int i = 0;i < n;++i){
        if(abs(k*Ps[i].x-Ps[i].y+(1-k)*10000) < t){
            t = abs(k*Ps[i].x-Ps[i].y+(1-k)*10000);
            mark = i;
        }
    }
    return mark;
}
double getans(double k,int id){
    double a = -k*Ps[id].x + Ps[id].y;
    double b = -Ps[id].y/k+Ps[id].x;
    return a*a+b*b;
}
double f(double k){
    int id = check(-k);
    double ans = getans(-k,id);
    return ans;
}
double csf(double l,double r,int n = 6,double eps = 0.0000001){
double x;
while(r - l > eps){
double step = (r-l)/(n+1);
double mx = INF;
for(double i = l+step;i < r;i += step) {
    double t = f(i);
    if(mx > t){
mx = t;
                x = i;
            }
        }
l = x-step;
r = x+step;
}
return l;
}
int main(){
    while(scanf("%d",&n)!=EOF){
        for(int i = 0;i < n;++i){
            scanf("%d %d",&Ps[i].x,&Ps[i].y);
        }
        double k = csf(0,10000,4);
        printf("%.3lf\n",sqrt(f(k)));
    }
    return 0;
} 

codeforces Cable Connection相关推荐

  1. Xilinx Platform Cable USB II 下载器驱动安装教程——Win10

    一. Xilinx JTAG下载器 二. 问题描述 下载器连上电脑后,在设备管理中显示为 其它设备 -> 未知设备,或者是 Programming cables -> Xilinx Pla ...

  2. impact检测cable失败

    之前遇到过的问题,纠结很久,看大家是否遇到一样的,分享出来 换了台电脑,win10, B210, impact突然检测不到cable,之前是好的,报错: WARNING:iMPACT:923 - Ca ...

  3. NTRIP/ SUPL

    1. NTRIP - Network transport of RTCM via Internet NTRIP version 1.0:  http://igs.bkg.bund.de/index_n ...

  4. cpu开机就是60℃_铅锤哥:十五种电脑开机黑屏的原因与解决思路

    点击上面↑ 玩转电脑 关注铅锤哥,轻松学电脑 最近,很多朋友联系铅锤哥,由于疫情影响不能出门,很多同学只能把家里闲置很久的电脑拿出来办公或者上课,但是一开机,发现电脑黑屏没法用了. 一般常说的黑屏故障 ...

  5. word20161207

    DHCPRELEASE, DHCP release message / DHCP 释放消息 DHCPREQUEST, DHCP request message / DHCP 请求消息 dial 拨号位 ...

  6. linux wine 性能,Wine 1.9.16 发布,改善 GDI 性能

    Wine 1.9.16 最近发布下载,配备了大量的新功能,改进和错误修正.显着的更新包括在MacOS下能更好与64位二进制兼容性,提升JavaScript性能,对Direct3D的改进,在Direct ...

  7. 应用filestream设置时存在未知错误_开机黑屏?常见启动黑屏错误的中文解释!学习电脑知识电脑小匠...

    第一种:没有报错的错 网卡启动 这个实际上并没有报错误信息,而是跳到网卡启动了,不太懂英文的注意几个关键词:CLIENT MAC ADDR,这种情况是电脑没有检测到启动设备,然后跳到最后的网卡启动了, ...

  8. 电脑可以开机但是黑屏_铅锤哥:十五种电脑开机黑屏的原因与解决思路

    点击上面↑ 玩转电脑 关注铅锤哥,轻松学电脑 最近,很多朋友联系铅锤哥,由于疫情影响不能出门,很多同学只能把家里闲置很久的电脑拿出来办公或者上课,但是一开机,发现电脑黑屏没法用了. 一般常说的黑屏故障 ...

  9. FPGA--------随笔总结(持续更新)

    目录 1,写博客尽可能需要的步骤目录 2,对于ISE中锁相环复位信号的使用 3,信号的延时测试 4,安装检测不到驱动 5,ISE下启动SDK 6,开发板器件型号的选择 1,写博客尽可能需要的步骤目录 ...

最新文章

  1. preempt_count详解
  2. SAP Spartacus SpartacusB2cConfigurationModule 的使用场景
  3. luogu P2257 YY的GCD
  4. 关于腾讯云丢数据事件的一些看法
  5. 例子---JS无缝轮播图
  6. python高清大图代码_python2的代码从吉卜力网页上下载高清图片
  7. 前端会有什么新的变化
  8. 编写led驱动及其实验过程
  9. sop封装与dip封装的语音芯片有何区别?
  10. AdobeFlashPlayer.资料
  11. SDN之旅—mininet(在Windows系统上)安装
  12. 微信小程序服务器和app互通,解读:App 与小程序的互通能力和限制
  13. 2021.12.13 - 176.保持城市天际线
  14. Dongxiexidu
  15. 来自#Devoxx 2014的WebSocket螺母和螺栓的幻灯片
  16. 2022-2028年中国折叠椅行业发展策略分析及投资前景研究报告
  17. Python两台电脑实现TCP通信
  18. Bessie Goes Moo(暴力)
  19. 详解 - RS232、RS422、RS485 联系与区别
  20. 南京大学计算机系本科生开放日,2018/7

热门文章

  1. 添加图标_win10系统轻松添加显示桌面图标的操作方法
  2. java控制系统音量_Java 控制 Windows 系统音量-Go语言中文社区
  3. 电子工程系庆贺电贺信_创造下一代光电子集成电路
  4. Java手写Hashmap(HashMap的基本用法)
  5. linux开发亿连手机互联,亿连手机互联车载版下载-亿连手机互联车机版v6.6.1 安卓版-腾牛安卓网...
  6. [Java基础]比较器排序Comparator的使用
  7. [剑指offer]面试题13:在O(1)时间删除链表结点
  8. hdu1276 士兵队列训练问题-list容器
  9. 蓝桥杯2017初赛-打印大X-找规律
  10. 数据结构(哈夫曼树,哈夫曼编码)入门篇,JAVA实现