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. ...
随机推荐
- Web安全攻防-----TCP/IP安全篇
知识点: 掌握TCP/IP的体系分层结构 掌握TCP/IP的各一层功能特点 掌握TCP/IP的数据在各层的名称 掌握TCP/IP的体系数据的封装和解封装 1.TCP/IP协议的历史 TCP/IP的起源 ...
- 删除oracle表报ORA-24005错误
请先执行:alter session set events'10851 trace name context forever,level 1'; 然后再删除表.
- 在ArcGIS中如何进行POI点抽稀
对POI点添加权重等级类型信息.例如添加短整形字段Weight,并根据业务逻辑设置不同种类的POI的权重值,如分5类,0代表重要性最低的POI,4代表重要性最高. 在ArcMap的标注管理栏中,设置使 ...
- swift 2.2 语法 (下)
前言: 1.此文中的语法会根据Swift的升级变动而更新. 2.如果需要请移步 -> swift2.2 语法(上).swift 2.2语法(中) 类的析构函数 swift会自动释放不需要的实例来 ...
- 【代码笔记】iOS-清除图片缓存UIActionSheet
一,效果图. 二,代码. RootViewController.m //点击任何处出现sheet -(void)touchesBegan:(NSSet *)touches withEvent:(UIE ...
- 【代码笔记】iOS-改变文字输入框背景
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- BFS、DFS与选课问题(拓扑排序)
1选课问题 Leetcode上有这样一道题:有代号0,1,2……n-1的n门课程.其中选择某些课程需要另一些课程作为前提条件.用一组pair来表示这些条件:[1,0],[1,2],表示如果要选修课程1 ...
- 文件件监听器,android系统拍照功能调用后删除系统生成的照片
先说说要实现的功能: android调用系统拍照功能实时 预览 删除 上传 保存 (用户不能再本地文件夹中看到拍的照片) 再说说遇到的问题: 1.调用系统拍照在系统自带的拍照文件夹中生成一张随机命名图 ...
- 查看mysql,apache,php,nginx编译参数
查看nginx编译参数: #/usr/local/nginx/sbin/nginx -V 查看mysql编译参数: cat /usr/local/mysql/bin/mysqlbug | grep ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...