Arctic Network UVA
来源:互联网 发布:石岐unity3d招聘 编辑:程序博客网 时间:2024/05/18 05:15
Arctic Network UVA - 10369
二分
题目大意:
有n个前哨站,现在有两种通信技术去连接哨站,卫星技术和无线电技术,通过卫星技术需要一个卫星信道,现在已知有m个信道,问说连接所有哨站时,通过无线电技术连接的最长距离的最小值。(每个哨站已经设立好了接受装置,卫星通信无需考虑距离)
题解:
二分一个答案x,只能走小于等于x的边。给每个连通块配备一台卫星电话,dfs一下有几个连通块,看看是不是小于m即可。
Code:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;const int N = 1005;int n,m;struct Point{ double x,y; Point(){} Point(double _x,double _y){ x=_x; y=_y; } }p[N];double dis(Point &a,Point &b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}bool vis[N];void dfs(int u,double x){ vis[u]=true; for(int v=1;v<=n;v++){ if(dis(p[u],p[v])<=x && !vis[v]){ dfs(v,x); } }}bool check(double x){ int cnt=0; memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++){ if(!vis[i]){ dfs(i,x); cnt++; } } return cnt<=m;}int main(){ freopen("a.in","r",stdin); int T; cin>>T; while(T--){ scanf("%d%d",&m,&n); for(int i=1;i<=n;i++){ scanf("%lf%lf",&p[i].x,&p[i].y); } double l=0.0, r=20000, mid; for(int i=1;i<=100;i++){ mid=(l+r)/2; if(check(mid)) r=mid; else l=mid; } printf("%.2f\n",mid); } }
阅读全文
0 0
- UVA 10369 Arctic Network
- UVA 10369 - Arctic Network
- UVa 10369 - Arctic Network
- UVa 10369 - Arctic Network
- Uva 10369 - Arctic Network
- UVa 10369 - Arctic Network
- UVa:10369 Arctic Network
- UVA 10369 - Arctic Network
- Arctic Network UVA
- Arctic Network UVA
- Uva 10369 - Arctic Network//kruskal
- poj 2349 uva 10369 - Arctic Network
- uva 10369 - Arctic Network(最小生成树)
- Uva - 10369 - Arctic Network
- UVA 10369 - Arctic Network(最小生成树)
- Uva 10369 Arctic Network 最小生成树
- UVA - 10369 Arctic Network kruskal算法
- UVA 10369- Arctic Network(最小生成树)
- AtCoder:Chocolate Bar(数学)
- USACO Section 1.1 Friday the Thirteenth
- 一个简单的蓝牙指令测试工具
- 命令工具类
- jedis分布式锁
- Arctic Network UVA
- 浏览器小结
- Vue.js路由组件vue-router的使用方法
- bzoj 2186 [Sdoi2008]沙拉公主的困惑
- UVA213 Message Decoding(二进制)
- hdu 1879 继续畅通工程
- LeetCode 409. Longest Palindrome
- TF/06_Neural_Networks/04_Single_Hidden_Layer_Network
- Go 语言并发机制初探