洛谷 P1783 海滩防御
来源:互联网 发布:手机虚拟按键软件 编辑:程序博客网 时间:2024/04/23 18:16
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】5 51 53 55 54 302 15【输入样例2】100 230 5090 100
【输出样例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.
【样例解释】
注意,封锁海滩是指,敌人的深入程度是有限制的,若敌人绕过了所有的信号塔,并且可以长驱直入,那么就说明道路没有完全封锁。
// 居然是 最小生成树 #include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>using namespace std;#define maxn 805int n,m,fa[maxn],x[maxn],y[maxn],tot;struct Edge{ int from,to; float value;}e[maxn*maxn];float GetDist(int u,int v){ return sqrt((x[u]-x[v])*(x[u]-x[v])+ (y[u]-y[v])*(y[u]-y[v]));}int Find(int x){ if(fa[x]== -1)return x; else return fa[x]=Find(fa[x]);}bool cmp(Edge a,Edge b){ return a.value<b.value;}int main(){ n=0,tot=0; scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) scanf("%d%d",&y[i],&x[i]); //memset(fa,-1,sizeof(fa)); for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) e[++tot]=(Edge){i,j,GetDist(i,j)/2}; for(int i=1;i<=n;i++){ e[++tot]=(Edge){i,0,y[i]}; e[++tot]=(Edge){i,n+1,m-y[i]}; } sort(e+1,e+tot+1,cmp); memset(fa,-1,sizeof(fa)); int cur=0; while(Find(0)!=Find(n+1)){ cur++; int rx=Find(e[cur].from),ry=Find(e[cur].to); if(rx!=ry)fa[rx]=ry; } printf("%.2f\n",e[cur].value); return 0;}
- 洛谷 P1783 海滩防御
- 洛谷P1783 海滩防御 分析+题解代码
- 洛谷 1783 海滩防御
- 洛谷-1783 海滩防御
- 金海滩
- 海滩生活
- 海滩烧烤
- 海滩上的思想者
- 瞌睡虫情迷上海滩
- 玛雅海滩水公园
- 夜中海滩漫步
- 纵情美丽的海滩城市
- 在海滩上拾贝壳
- 金山城市海滩攻略(上海松江)
- 海口胜地-假日海滩-沙滩烧烤
- 关于海滩争霸Crab代码的理解
- 海滩上最少有多少个桃子
- 新月集之海滩拾贝
- 求LCA最近公共祖先的在线ST算法_C++
- 前端性能优化
- 2017年android面试总结
- 洛谷 P1174 打砖块
- Tomcat web服务器中Catalina命名的由来
- 洛谷 P1783 海滩防御
- 查找div标签下的a标签的内容
- 洛谷 P1362 兔子数
- 洛谷 P1195 口袋的天空
- Codevs 搜索刷题 集合篇
- IT名企的算法面试题(更新中。。。)
- 洛谷 P1072 Hankson 的趣味题
- css 的绝对定位和相对定位
- Codevs 1004 四子连棋