海滩防御

题目描述

WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和仓库总是被敌方派人偷袭。于是,WLP动用了他那丰满且充实的大脑(或许更偏向前者),想出了一个好主意,他把海滩分成垂直于海岸线的若干列,在其中的几列上放置几个信号塔,试图来监视整个海滩。然而,WLP是一个非常心急的人,他把信号塔建好后才发现还需给信号塔供能,它们才能投入使用(这不是废话么),它们都有一个工作半径,一个圆形区域里的所有敌人都逃不过它们的监视,不过,WLP发现,敌人们非常狡猾,除非他将道路完全封死,否则WLP的敌人可以走过一条任意弯曲的路(不一定走整点,但是不会出第0列和第N列构成的边界)来偷他的东西。

于是,WLP就思考了:到底需要给每个信号塔多大的工作半径,才能将从海滩到内地的路径完全封死呢?他再次动用了他那丰满且充实的大脑,想了一堂数学课,终于,还是没想出来。于是,他向LZZ神犇求助(额……C_SUNSHINE的身份是不是暴露了)。

终于,在WLP:“%^!*@#!*(*^!*#@$^&(此处省略无数卖萌场景)”的哀求下,LZZ神犇写了一个程序,在1s内就解决了问题。但是,邪恶的LZZ神犇决定要将这个难题共享给无数无辜的OIer,所以,现在轮到你了。

输入输出格式

输入格式:

第一行两个整数N和M:表示海滩被WLP分成的列数0-N和信号塔个数。

第2-M+1行:每行两个数Xi,Yi表示1-M号信号塔所在的列数和离开海滩的距离。

输出格式:

一行一个实数,表示最小的工作半径,保留两位小数。

输入输出样例

输入样例#1:

【输入样例1】
5 5
1 5
3 5
5 5
4 30
2 15

【输入样例2】
100 2
30 50
90 100

输出样例#1:

【输出样例1】
1.00

【输出样例2】
39.05

说明

对于10%的数据:1≤M≤10,1≤Yi≤100;

对于30%的数据:1≤M≤50,1≤Yi≤1,000;

对于80%的数据:1≤M≤500,1≤Yi≤1,000;

对于100%的数据:1≤M≤800,1≤N≤1000,1≤Xi≤N,1≤Yi≤100,000.

【样例解释】

注意,封锁海滩是指,敌人的深入程度是有限制的,若敌人绕过了所有的信号塔,并且可以长驱直入,那么就说明道路没有完全封锁。

思路:图的转化+排序+并查集

先把数据转化为图中的边(包括点点边和点界边),然后给边排序,加边直到两边界相连(0-m+1)。

代码实现:

 1 #include<cmath>
 2 #include<cstdio>
 3 #include<iostream>
 4 #include<algorithm>
 5 #define maxm 1010
 6 using namespace std;
 7 int n,m,l,a,b,f[maxm];
 8 double ans,x[maxm],y[maxm];
 9 struct edge{int q,z;double v;}e[maxm*maxm];
10 inline int find(int x){return f[x]==x?x:f[x]=find(f[x]);}
11 inline double dis(int i,int j){return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))/2;}
12 inline bool cmp(const edge&a,const edge&b){return a.v<b.v;}
13 int main(){
14     scanf("%d%d",&n,&m);
15     for(int i=1;i<=m+1;i++) f[i]=i;
16     for(int i=1;i<=m;i++) scanf("%lf%lf",&x[i],&y[i]);
17     for(int i=1;i<m;i++)
18     for(int j=i+1;j<=m;j++)
19     e[l++]=(edge){i,j,dis(i,j)};
20     for(int i=1;i<=m;i++){
21         e[l++]=(edge){0,i,x[i]};
22         e[l++]=(edge){i,m+1,n-x[i]};
23     }
24     sort(e,e+l,cmp);
25     for(int i=0;i<l;i++){
26         a=find(e[i].q),b=find(e[i].z);
27         f[b]=a;ans=e[i].v;
28         if(find(0)==find(m+1)) break;
29     }
30     printf("%.2lf\n",ans);
31     return 0;
32 }

竟然一直没有勇气做。

题目来源:洛谷

时间: 2024-12-20 13:36:46

海滩防御的相关文章

前端安全(XSS、CSRF防御)

一.网络安全 OWASP:开放式Web应用程序安全项目(OWASP,Open Web Application Security Project) OWASP是一个开源的.非盈利的全球性安全组织,致力于应用软件的安全研究.http://www.owasp.org.cn/ 二.XSS攻击 1.总述 2.XSS攻击原理 XSS攻击(Cross-Site Scripting)跨站脚本攻击. 被OWASP评为十大安全漏洞中的第二威胁漏洞. 特点:能注入恶意的HTML/JavaScript代码到用户浏览的网

1048: 导弹防御系统

1048: 导弹防御系统 时间限制: 1 Sec  内存限制: 128 MB提交: 836  解决: 349[提交][状态][讨论版] 题目描述 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹.拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹. 输入

防御 XSS 的七条原则

本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:<Stored and Reflected XSS Attack><DOM Based XSS> 攻击者可以利用XSS漏洞向用户发送攻击脚本,而用户的浏览器因为没有办法知道这段脚本是不可信的,所以依然会执行它.对于浏览器而言,它认为这段 脚本是来自可以信任的服务器的,所以脚本可以光明正大地访问Cookie,或者保存在浏览器里被当前网站所用的敏

Kali Linux 渗透测试之拒绝服务攻击及防御

作为渗透测试人员,有时候需要对客户的系统进行DDOS攻击测试,那么这个时候就需要我们有一款合格的测试工具.而在Kali Linux上就集成了一些DDOS测试工具供测试者使用,下面就简单介绍一些测试工具. kali下的拒绝服务攻击: D(D)OS........................................1 yersinia......................................2 hping3................................

防御web网站攻击,选择好的服务器至关重要

Web服务器保护无疑是一个热门话题.随着技术发展成熟,人们对便捷性的期待越来越高,服务器Web应用成为主流业务系统载体.存储在Web上的Web关键业务系统中的数据的价值已经引起了攻击者的关注,Web漏洞攻击和攻击工具的在线漏洞降低了攻击的门槛,并且使得攻击盲目和随机.如使用GoogleHacking原理的批量搜索与应用程序中已知的漏洞,以及SQL批注和挂马等.但是对于重要的Web应用程序(如运营商或财务部门)来说,总是有兴趣的黑客持续跟踪. 网站遭受DDOS.CC攻击后一般会表现出:网站掉包严重

如何找个海外高防服务器,防御DDOS攻击呢?

如今大数据时代,DDOS攻击让很多站长头疼,找不到一台好的高防服务器也成了站长心目中的心病.那么,哪里有好的高防服务器呢?哪里有能防御DDOS的海外高防服务器呢?什么是DDOs攻击呢? DDoS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性.如果说 以前网络管理员对抗Dos可以采取过滤IP地址方法的话,那么面对当前ddos众多伪造出来的地址则显得没有办法. (1)定期扫描 要定期扫描现有的网络主节点,清查可能存在的安全漏洞,对新出现的漏洞及时进

DDoS攻击给游戏网站带来灾难性的破坏,如何防御?

众所周知,游戏是个暴利的行业,稍有点名气就能赚个盆满钵满,但它的用户基数大且分布广泛,遍布全国各地,加大了线上运维难度,并成为影响游戏增长的固有顽疾,而这些"先天缺陷"也成为其致命弱点:一旦遭受ddos冲击,损失极其惨重. 调查发现2016年以来国内多家游戏公司遭遇到了ddos攻击,平局峰值在300G左右,甚至最高达到1T,如此大规模的攻击,使有些游戏公司日亏损数百万,甚至也有因遭遇ddos攻击而一蹶不振走向倒闭.对此,一些有实力游戏公司也采取相应手段并支付近千万的昂贵费用进行防御,而

高防CDN防御百万级DDoS攻击

企业了解DDoS的攻击方式,他们就必须决定如何应付这种攻击,这是现在几乎不可避免的状况.第一个方法是与一些DDoS防御供应商合作,如集群盾.WAFCDN.高防盾.高防云盾等,这是应对最严重攻击的一个可行方法.这些公司专门研究如何防御和应付可能的恶意流量.然而,如果一个组织没有足够资源购买第三方产品和服务,那么聪明的安全管理员也会采取下面这些步骤,尽量减小DDoS攻击的危害.      首先,安全管理员应该先了解他们组织的互联网连接.正如前提所提到的,一般组织的平均连接带宽为10Gbps,所以管理

什么是网络攻击及怎样防御攻击详解

拒绝服务攻击的发展从拒绝服务攻击已经有了很多的发展,简单Dos到DdoS.那么什么是Dos和DdoS呢?DoS是一种利用单台计算机的攻击方式.而DdoS(Distributed Denial of Service,分布式拒绝服务)是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布.协作的大规模攻击方式,主要瞄准比较大的站点,比如一些商业公司.搜索引擎和政府部门的站点.DdoS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性.如果说以前网络管理员