uva216 Getting in Line
题目大意:给定一些电脑的笛卡尔平面直角坐标系坐标,求将这些电脑连成一条链的最小总距离(单位:ft),由于连线问题,每两台电脑之间的连接距离要多16 ft。
思路:全枚举暴搜。
可行性剪枝:当早已枚举完了n台电脑时,剪枝。
最优化剪枝:若当前的累计距离总和超过了已求出的最小距离总和,意味着再搜索也无法得出更优解,则剪枝。
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int ans[8],dans[8],n;
bool vis[8];
struct node{int x,y;}a[8];
double dis[8][8],tot;
inline double cal(int i,int j)
{
return sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
}
void dfs(int cur,double sum)
{
if(sum>=tot)return;
if(cur>=n){
tot=sum;
for(int i=0;i<n;i++)
ans[i]=dans[i];
}
for(int i=0;i<n;i++)
if(!vis[i]){
vis[i]=1;
dans[cur]=i;
double tmp=cur?dis[dans[cur-1]][i]:0;
dfs(cur+1,sum+tmp);
vis[i]=0;
}
}
void Init()
{
for(int i=0;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
dis[i][j]=dis[j][i]=cal(i,j)+16;
tot=(double)0x3f3f3f3f;
}
void out(int &T)
{
puts("**********************************************************");
printf("Network #%d\n",++T);
for(int i=1;i<n;i++){
int p=ans[i-1],q=ans[i];
printf("Cable requirement to connect (%d,%d) to (%d,%d) is %.2lf feet.\n",a[p].x,a[p].y,a[q].x,a[q].y,dis[p][q]);
}
printf("Number of feet of cable required is %.2lf.\n",tot);
}
int main()
{
int T=0;
while(scanf("%d",&n)&&n){
Init();
dfs(0,0);
out(T);
}
return 0;
}
//此程序是首次全程在ubuntu(of linux)环境下编写的,以示纪念;
uva216 Getting in Line的更多相关文章
- 备战NOIP每周写题记录(一)···不间断更新
※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...
- ILJMALL project过程中遇到Fragment嵌套问题:IllegalArgumentException: Binary XML file line #23: Duplicate id
出现场景:当点击"分类"再返回"首页"时,发生error退出 BUG描述:Caused by: java.lang.IllegalArgumentExcep ...
- Error on line -1 of document : Premature end of file. Nested exception: Premature end of file.
启动tomcat, 出现, ( 之前都是好好的... ) [lk ] ERROR [08-12 15:10:02] [main] org.springframework.web.context.Con ...
- 关于xml加载提示: Error on line 1 of document : 前言中不允许有内容
我是在java中做的相关测试, 首先粘贴下报错: 读取xml配置文件:xmls\property.xml org.dom4j.DocumentException: Error on line 1 of ...
- Eclipse "Unable to install breakpoint due to missing line number attributes..."
Eclipse 无法找到 该 断点,原因是编译时,字节码改变了,导致eclipse无法读取对应的行了 1.ANT编译的class Eclipse不认,因为eclipse也会编译class.怎么让它们统 ...
- Linix登录报"/etc/profile: line 11: syntax error near unexpected token `$'{\r''"
同事反馈他在一测试服务器(CentOS Linux release 7.2.1511)上修改了/etc/profile文件后,使用source命令不能生效,让我帮忙看看,结果使用SecureCRT一登 ...
- [LeetCode] Line Reflection 直线对称
Given n points on a 2D plane, find if there is such a line parallel to y-axis that reflect the given ...
- [LeetCode] Tenth Line 第十行
How would you print just the 10th line of a file? For example, assume that file.txt has the followin ...
- [LeetCode] Max Points on a Line 共线点个数
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
随机推荐
- Oracle EXP-00091的解决方法
[sql] EXP-00091: 正在导出有问题的统计信息.www.2cto.com . . 正在导出表 WF_GENERAL导出了 EXP-00091: 正 ...
- 转-Nmap扫描原理与用法
1 Nmap介绍 操作系统与设备类型等信息. Nmap的优点: 1. 灵活.支持数十种不同的扫描方式,支持多种目标对象的扫描. 2. 强大.Nmap可以用于扫描互联网上大规 ...
- iOS 获取User-Agent
第一种方法 UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; NSString *userAgent = [w ...
- 【代码笔记】iOS-把<br!>换成\n
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // ...
- json官方学习档案
项目经常用json开发,但说实话,对json了解的一直不深入.今天看了下json的官方资料,明了很多. json官方网址:http://www.json.org/json-zh.html JSON(J ...
- 使用T-SQL进行活动目录查询
最近在某个项目中,需要针对TFS的用户按照所属的AD组来进行数据分析,但发现TFS中并没有存储用户所属的组信息,故考虑直接从AD中提取这个信息并存放在SQL Server的数据库表里面去. 经过一番G ...
- 挖一挖C#中那些我们不常用的东西之系列(2)——IsXXX 系列方法
不知道有人做没做过对日外包,如果做过的话,那么对vb.net应该非常熟悉了,当年我刚毕业的时候也做过四个月的外包,那种日子简直 不是人过的,就连大楼下面买珠宝的阿姨都说,这些孩子,只看过他们上班,就没 ...
- PHP curl https访问问题
PHP curl https访问问题,原代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* @String url URL地址 * @Array data P ...
- mydumper 安装报错处理
mydumper 官网:https://launchpad.net/mydumper 下载之后,安装报错: [root@localhost local]# cd mydumper-0.6.2 [roo ...
- 烂泥:学习Nagios(二):Nagios配置
本文由秀依林枫提供友情赞助,首发于烂泥行天下 nagios安装完毕后,我们现在就来配置nagios.有关nagios的安装,可以参考<烂泥:学习Nagios(一):Nagios安装>这篇文 ...