poj 2349 Arctic Network(最小生成树的第k大边证明)
题目链接:
http://poj.org/problem?id=2349
题目大意:
有n个警戒部队,现在要把这n个警戒部队编入一个通信网络,
有两种方式链接警戒部队:1,用卫星信道可以链接无穷远的部队.
2,用信号收发器可以链接周围d米以内的部队.
现在有s个卫星信道,问d最小是多少时能连接全部的警戒部队?
解题思路:
我是用求最小生成树,记录路径长度,对路径长度排序后,第k长的边就是答案,
但是队友是用最小k度限制生成树,因为我的方法它证明不了,也推翻不了~~~~,
最后我下去仔细想了想反证法还是可以证明的。
证明:
假设:先假设最小生成树的第k大边不是最优解。
证:现在有一MST,我从中删除了一条第k大的边s,则MST变成了两个联通分支,根据假设存在一条s'<s,可以使两个联通分支连起来变成联通树MST',因为s'<s,则MST'<MST,可得出假设不成立!!!!
#include <cmath>
#include <string>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; const int maxn = ;
const int INF = 0x3f3f3f3f;
const double Exp = 1e-; struct point
{
int x, y;
int length(point a)
{
return (a.x - x)*(a.x - x) + (a.y - y)*(a.y - y);
}
}; int cost[maxn+][maxn+], lowc[maxn+];
int vis[maxn+], num[maxn+]; void init ()
{
for (int i=; i<maxn+; i++)
for (int j=; j<maxn; j++)
cost[i][j] = INF;
}
int prim (int n)
{
int i, j;
memset (vis, , sizeof(vis));
vis[] = ;
for (i=; i<n; i++)
lowc[i] = cost[][i];
for (i=; i<n; i++)
{
int p, mini = INF;
for (j=; j<n; j++)
if (!vis[j] && lowc[j] < mini)
{
p = j;
mini = lowc[j];
}
vis[p] = ;
for (j=; j<n; j++)
{
if (!vis[j])
lowc[j] = min(lowc[j], cost[p][j]);
}
}
} int main ()
{
int n, s, p;
point P[maxn + ];
scanf ("%d", &n);
while (n --)
{
scanf ("%d %d", &s, &p);
for (int i=; i<p; i++)
{
scanf ("%d %d", &P[i].x, &P[i].y);
for (int j=; j<i; j++)
cost[i][j] = cost[j][i] = P[i].length(P[j]);
}
prim (p);
sort (lowc, lowc+p, greater<int>());
printf ("%.2f\n", sqrt(lowc[s-]));
}
return ;
}
poj 2349 Arctic Network(最小生成树的第k大边证明)的更多相关文章
- POJ 2349 Arctic Network(最小生成树+求第k大边)
题目链接:http://poj.org/problem?id=2349 题目大意:有n个前哨,和s个卫星通讯装置,任何两个装了卫星通讯装置的前哨都可以通过卫星进行通信,而不管他们的位置. 否则,只有两 ...
- POJ 2349 Arctic Network (最小生成树)
Arctic Network Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- poj 2349 Arctic Network 最小生成树,求第k大条边
题目抽象出来就是有一些告诉坐标的通信站,还有一些卫星,这些站点需要互相通信,其中拥有卫星的任意两个站可以不用发射器沟通,而所有站点的发射器要都相同,但发射距离越大成本越高. 输入的数据意思: 实例个数 ...
- poj 2349 Arctic Network
http://poj.org/problem?id=2349 Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- POJ 2349 Arctic Network (最小生成树)
Arctic Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/F Description The Departme ...
- Poj 2349 Arctic Network 分类: Brush Mode 2014-07-20 09:31 93人阅读 评论(0) 收藏
Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9557 Accepted: 3187 De ...
- POJ 2349 Arctic Network(最小生成树,第k大边权,基础)
题目 /*********题意解说——来自discuss——by sixshine**************/ 有卫星电台的城市之间可以任意联络.没有卫星电台的城市只能和距离小于等于D的城市联络.题 ...
- POJ 2349 Arctic Network(最小生成树中第s大的边)
题目链接:http://poj.org/problem?id=2349 Description The Department of National Defence (DND) wishes to c ...
- POJ 2349 Arctic Network(贪心 最小生成树)
题意: 给定n个点, 要求修p-1条路使其连通, 但是现在有s个卫星, 每两个卫星可以免费构成连通(意思是不需要修路了), 问修的路最长距离是多少. 分析: s个卫星可以代替s-1条路, 所以只要求最 ...
随机推荐
- Intellij IDEA远程调试tomcat
1.windows系统 文件catalina.bat首行增加下面代码 set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE ...
- Linux性能诊断工具
vmstat:虚拟内存状况 –swpd free buff cache si so in cs 參考:http://www.cnblogs.com/ggjucheng/archi ...
- Qt布局管理器的使用(一)
曾经对Qt的布局管理器掌握的还不清楚,今天特意学习了下.感觉收获还挺大的,特意拿出来和大家分享. 首先.要明确布局管理器的用处,及使我们的界面看起来比較整洁.美化.另外一点就是为了使我们的控件可以更随 ...
- ZOJ 2706 Thermal Death of the Universe (线段树)
题目链接:ZOJ 2706 Thermal Death of the Universe (线段树) 题意:n个数.m个操作. 每一个操作(a,b)表示(a,b)全部值更新为这个区间的平均数:1.当前的 ...
- Oracle可插拔数据库的jdbc连接串写法
我在服务器上部署某个第三方系统的数据库的时候,服务器数据库版本为oracle 12c.我采用的方式是新建了一个实例.访问正常. 后来项目的负责人告诉我,oracle12C支持所谓的可插拔数据库.可插拔 ...
- 大学生程序设计邀请赛(华东师范大学)B. 分词 DP
B. 分词 有一句句子因为粘贴的时候出现了一点问题空格全部丢失了.现在给一本字典,每个词都对应这个词出现的频率(每十亿).根据这个频率,我们可以根据下面的公式算出这个词带来的收益 P(word): ...
- mongo14-----group,aggregate,mapReduce
group,aggregate,mapReduce 分组统计: group() 简单聚合: aggregate() 强大统计: mapReduce() db.collection.group(docu ...
- YTU 2430: C语言习题 链表建立,插入,删除,输出
2430: C语言习题 链表建立,插入,删除,输出 时间限制: 1 Sec 内存限制: 128 MB 提交: 576 解决: 280 题目描述 编写一个函数creatlink,用来建立一个动态链表 ...
- 关于intent传递对象后是传递的对象的地址还是对象的拷贝?
var intent = Intent(activity,SingleColorControlActivity::class.java); var bundle = Bundle()// bundle ...
- Gitlab+Gerrit+Jenkins完整对接
近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...