Description

著名的手机网络运营商Totalphone 修建了若干基站收发台,以用于把信号网络覆盖一条新建的高速公路。因为Totalphone 的程序员总是很马虎的,所以,基站的传功功率不能独立设置,只能将所有新基站的功率设置为一个相同的值。为了让能源的消耗尽量少,公司希望知道公路中任意点到最近基站距离的最大值。

Solution

首先我们可以考虑对答案有贡献的点会满足什么条件?假设现在有两个点,把它们连线,做这条连线的中线,倘若这条中线交在x轴上的某一点D,很明显在D点的左边到横坐标更小的点的距离更近,右边的到横坐标更大的点更近(附图)。

扩展到三个点,若是第一个点与第二个点的中垂线和第二个点与第三个点的中垂线相交在x轴上方,那第二个点是永远不会对答案有贡献(附图)。

对于这些无用的点,显然可以用一个单调队列把它们去掉,剩下的点都是有可能作为最优答案的,剩下的点直接计算取最优质就可以了。还应该要把中垂线在x轴交点超过公路长度范围的点去掉,因为它们是不会有贡献的,预处理出x坐标相同时,只保留y轴绝对值较小的点就可以了,ans初值应是(0,0)和(len,0)点的贡献。

Code

#include<algorithm>
#include<stdio.h>
#include<math.h>
#include<iostream>
#include<string.h>
using namespace std;
#define fo(i,a,b) for(i=a;i<=b;i++)
#define sqr(x) pow(x,2)
typedef double db;
const int maxn=1e6+5;
int n,m,st,x,y,i,d[maxn][2],l[maxn],r[maxn],sum,a[maxn][2],zf,tot;
db z[maxn],ans,dis,dis1,dis2;
bool bz;
char ch;
int read(){ch=getchar();tot=0;zf=1;while(ch<'0'||ch>'9'){if(ch=='-') zf=-1;ch=getchar();}while('0'<=ch&&ch<='9') tot=tot*10+zf*(ch-'0'),ch=getchar();return tot;
}
db calc(db x,db y,db xx,db yy){return (sqr(x)+sqr(y)-sqr(xx)-sqr(yy))/(2*(x-xx));
}
int main(){freopen("mobile.in","r",stdin);freopen("mobile.out","w",stdout);n=read();m=read();sum=0;fo(i,1,n){x=read();y=read();if(sum==0||x!=a[sum][0]) sum++,a[sum][0]=x,a[sum][1]=y;else if(x==a[sum][0]&&abs(a[sum][1])>abs(y))a[sum][0]=x,a[sum][1]=y;}n=sum;sum=0;st=1;dis1=dis2=1e20;fo(i,1,n){dis1=min(dis1,sqr(a[i][0])+sqr(a[i][1]));dis2=min(dis2,sqr(a[i][0]-m)+sqr(a[i][1]));}ans=max(dis1,dis2);fo(i,1,n){sum++,d[sum][0]=a[i][0],d[sum][1]=a[i][1];l[sum]=r[sum-1],r[sum]=i;if(sum>=2) z[sum]=calc(d[sum-1][0],d[sum-1][1],d[sum][0],d[sum][1]);while(sum-st+1>2){bz=false;if(z[sum-1]>=z[sum]){d[sum-1][0]=d[sum][0],d[sum-1][1]=d[sum][1];r[sum-1]=r[sum],r[sum]=l[sum]=0;sum--; z[sum]=calc(d[sum-1][0],d[sum-1][1],d[sum][0],d[sum][1]);bz=true;}if(sum-st+1>2&&z[st+1]<0) st++,bz=true;if(!bz) break;}}fo(i,st+1,sum){if(z[i]>m) break;dis=sqr(a[l[i]][0]-z[i])+sqr(a[l[i]][1]);if(dis>ans)ans=dis;}printf("%.6lf",sqrt(ans));
}

【BOI2012】Mobile(mobile)相关推荐

  1. 【JZOJ3636】【BOI2012】Mobile(mobile)

    Mission 著名的手机网络运营商Totalphone 修建了若干基站收发台,以用于把信号网络覆盖一条新建的高速公路.因为Totalphone 的程序员总是很马虎的,所以,基站的传功功率不能独立设置 ...

  2. 【BOI2012】Mobile

    ##Description 著名的手机网络运营商Totalphone 修建了若干基站收发台,以用于把信号网络覆盖一条新建的高速公路.因为Totalphone 的程序员总是很马虎的,所以,基站的传功功率 ...

  3. 【转载】windows mobile 上隐藏和关闭X以及OK的处理

    [转自]http://blog.csdn.net/czbever 1.隐藏X:  在WM_CREATE里  SetWindowLong(hWnd,GWL_STYLE,WS_NONAVDONEBUTTO ...

  4. 【手机】Windows Mobile手机软件安装卸载方法

    智能手机功能强大,最重要的一方面就是它们可以反复的安装软件游戏以及主题等.以下罗列了智能手机上常见的几种格式软件的安装以及卸载方法. 软件.游戏的安装 在Windows Mobile手机上可安装的软件 ...

  5. 【小牛分享】jquery mobile网页demo实例代码下载

    原文:[小牛分享]jquery mobile网页demo实例代码下载 源代码下载地址:http://www.zuidaima.com/share/1622363259194368.htm 也可以用手机 ...

  6. 【ARXIV2205】EdgeViTs: Competing Light-weight CNNs on Mobile Devices with Vision Transformers

    [ARXIV2205]EdgeViTs: Competing Light-weight CNNs on Mobile Devices with Vision Transformers 论文:https ...

  7. 【转】ibatis的简介与初步搭建应用

    [转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...

  8. 【转】iPhone4清理垃圾文件的方法

    iPhone4清理垃圾文件的方法 gqzhu:用了一段时间的小4之后,装了一大堆的软件,像在线的视频播放,音乐播放,游戏软件等等,近期发现机子使用越来越慢,系统的可用空间越来越少,又苦于不知道如何去清 ...

  9. 【Paper】2015_El H_Decentralized Control Architecture for UAV-UGV Cooperation

    Decentralized Control Architecture for UAV-UGV Cooperation 1 Introduction 2 Problem Statement and Ar ...

最新文章

  1. 自己开发开源jquery插件--给jquery.treeview加上checkbox
  2. servlet规范定义的Servlet生命周期
  3. 链式存储mysql_链栈:栈的链式存储结构
  4. jop怎么读音英语怎么说_“春晚”英语怎么说?
  5. 自考--运筹学--计算题总结
  6. Asynchronous(异步处理-Promise)
  7. 基于JAVA+Servlet+JSP+MYSQL的物流管理系统
  8. 关于session校验在项目中的使用
  9. mysql cluster 1186_配置Mysql Cluster时出错Unable to connect with connect string_MySQL
  10. NPP/VIIRS夜间灯光数据下载和介绍
  11. 炸弹人 炸弹爆炸 c语言_发展恐怖故事–邮件炸弹
  12. 27岁了,女生,还可以学前端开发吗?可以的话,怎么开始学呢?
  13. 链家网爬取深圳租房信息并存入MySQL
  14. 微信小程序退款 报错 FAIL 证书验证失败
  15. Prometheus简介和安装
  16. 基于Ti Omap3x 分析v4l2架构
  17. 【Vue知识点- No4.】vue组件、组件通信、Todo案例
  18. 外星人计算机组装配置方案,最好的电脑配置_2020年最强最牛的笔记本配置与组装电脑方案...
  19. C程序编译时错误与运行时错误
  20. 毕设 - 大数据用户画像分析系统 - 数据分析可视化

热门文章

  1. python软件如何安装方法_python软件安装包+安装教程
  2. PC端如何查看WiFi密码
  3. 学Java怎么看API(详细图解)+查看Java源码(IDEA)
  4. 2014H-Star初赛题解
  5. 看不到共享?看不到工作组计算机?访问不了局域网的其它计算机?这样解决!
  6. 【蓝桥杯省赛】冲刺练习题【绘图】倒计时【10】天
  7. [C语言]ternary conditional operator (三目运算)
  8. 对app请求的参数和响应进行rsa加密和解密
  9. gtx1660是什么级别的_GTX1660配什么CPU和主板 GTX1660显卡搭配指南
  10. 常用 TCP/UDP 端口列表