Steiner tree
Gym - 101908J Joining Capitals
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = ;
const double INF = 1e12;
pair<int, int> p[MAXN];
double dp[MAXN][ << ], dis[MAXN][MAXN];
int N2(int x) {
return x * x;
}
double get_dis(pair<int, int> a, pair<int, int> b) {
return sqrt(N2(a.first - b.first) + N2(a.second - b.second));
}
int main() {
int n, k;
scanf("%d %d", &n, &k);
for (int i = ; i < n; i++) {
scanf("%d %d", &p[i].first, &p[i].second);
}
for (int i = ; i < n; i++) {
for (int j = ; j < n; j++) {
if (i != j) {
dis[i][j] = get_dis(p[i], p[j]);
}
}
}
for (int i = k; i < n; i++) {
for (int j = ; j < ( << k); j++) {
dp[i][j] = ;
for (int s = ; s < k; s++) {
dp[i][j] += (j >> s & ) * dis[i][s];
}
}
}
for (int S = ; S < ( << k); S++) {
for (int x = k; x < n; x++) {
for (int i = k; i < n; i++) {
if (i != x) {
for (int sub = S; ; sub = (sub - )&S) {
dp[x][S] = min(dp[x][S], dis[i][x] + dp[x][sub] + dp[i][S ^ sub]);
if (!sub) {
break;
}
}
}
}
}
}
double ans = INF;
for (int i = k; i < n; i++) {
ans = min(ans, dp[i][( << k) - ]);
}
printf("%.5f\n", ans);
return ;
}
Steiner tree的更多相关文章
- Minimal Steiner Tree ACM
上图论课的时候无意之间看到了这个,然后花了几天的时间学习了下,接下来做一个总结. 一般斯坦纳树问题是指(来自百度百科): 斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种.最小生成树是在 ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- ZJOI Day 2 游记
---恢复内容开始--- 去ZJOI Day 2打了一会酱油...各种神犇大爷都来屠,南外的小朋友也来屠我们了真是感动...没有看到毛爷爷真是可惜.. Day[-1] 早上还在上课,吃完中饭立马跑去找 ...
- 【HDOJ】3311 Dig The Wells
Steiner Tree.概念就不讲了,引入0号结点.[1, n+m]到0连一条边,权重表示挖井的费用.这样建图spfa求MST即满足所求解. /* 3311 */ #include <iost ...
- BZOJ 2595: [Wc2008]游览计划 [DP 状压 斯坦纳树 spfa]【学习笔记】
传送门 题意:略 论文 <SPFA算法的优化及应用> http://www.cnblogs.com/lazycal/p/bzoj-2595.html 本题的核心就是求斯坦纳树: Stein ...
- 《清华梦的粉碎》by王垠
清华梦的诞生 小时候,妈妈给我一个梦.她指着一个大哥哥的照片对我说,这是爸爸的学生,他考上了清华大学,他是我们中学的骄傲.长大后,你也要进入清华大学读书,为我们家争光.我不知道清华是什么样子,但是我 ...
- 看到了必须要Mark啊,最全的编程中英文词汇对照汇总(里面有好几个版本的,每个版本从a到d的顺序排列)
java: 第一章: JDK(Java Development Kit) java开发工具包 JVM(Java Virtual Machine) java虚拟机 Javac 编译命令 java ...
- XV Open Cup named after E.V. Pankratiev. GP of Three Capitals
A. Add and Reverse 要么全部都选择$+1$,要么加出高$16$位后翻转位序然后再补充低$16$位. #include<stdio.h> #include<iostr ...
- HDU 6060 17多校3 RXD and dividing(树+dfs)
Problem Description RXD has a tree T, with the size of n. Each edge has a cost.Define f(S) as the th ...
随机推荐
- EUREKA 删除 or 强制下线/上线 实例
开发环境,EUREKA 注册中心 某服务被注册了多个实例,feign 调用时 服务请求到其他实例上,请求收不到,使用一下命令删除 或者强制下线实例: 1 .DELETE 删除注册实例,但是如果被删除 ...
- UISearchBar去掉SearchBar上面两条分割线
设置之前: 设置之后: 代码如下: // // ViewController.m // UISearchBarDemo // // Created by 思 彭 on 17/3/24. // Copy ...
- Golang中基础的命令行模块urfave/cli
前言相信只要部署过线上服务,都知道启动参数一定是必不可少的,当你在不同的网络.硬件.软件环境下去启动一个服务的时候,总会有一些启动参数是不确定的,这时候就需要通过命令行模块去解析这些参数,urfave ...
- office web apps安装部署,配置https,负载均衡(四)安装office web apps相关软件
前提条件: 1.一台windows server 2008R2服务器,并且已经配置了域: 服务器连接域控制器的相关文档,请查看上一篇文章: office web apps安装部署,配置https,负载 ...
- Keil version 2汉字显示乱码的解决方案
Keil version 2汉字显示乱码的解决方案 Keil2对汉字的支持不好,在删除汉字字符时,一不小心会删除一半而留一半,这时并不显示错误或乱码,而是貌似都删除了,但编译程序可能会报错,这时再查错 ...
- AI测试——旅程的终点
在2019年6月,我产生了一个想法,即人工智能探索测试AIET(Artificial intelligence exploration test),大概用了一周时间来思考怎么把人工智能应用到测试领域, ...
- 【Python开发】urllib2.urlopen超时问题
原帖地址:http://hi.baidu.com/yss1983/item/933fbe45a09c43e01381da06 问题描述: 没有设置timeout参数,结果在网络环境不好的情况下 ...
- 【Linux开发】linux设备驱动归纳总结(一):内核的相关基础概念
linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- JS延迟加载的几种方式
参考链接:https://blog.csdn.net/meijory/article/details/76389762
- 第一次实验报告&学习总结
实验报告一&学习总结 一.实验目的 熟悉JDK开发环境 熟练掌握结构化程序设计方法 二.实验内容 打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身.例 ...