C - 下沙小面的(2)
C – 下沙小面的(2)
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit
Status
Description
前文再续,书接上一题。话说当上小面的司机的Lele在施行他的那一套拉客法则以后,由于走的路线太长,油费又贵,不久便亏本了。(真可怜~)于是他又想了一个拉客的办法。
对于每一次拉客活动,他一次性把乘客都拉上车(当然也不会超过7个,因为位置只有7个)。然后,Lele计算出一条路线(出于某些目的,Lele只把车上乘客的目的地作为这条路线上的站点),把所有乘客都送到目的地(在这路线上不拉上其他乘客),并且使总路线长度最短。
不过Lele每次都要花很多时间来想路线,你能写个程序帮他嘛?
Input
本题目包含多组测试。最后一组测试后有一个0代表结束。
每组测试第一行有一个整数NCity(3<=NCity<=30)表示下沙一共有多少个站点(站点从0开始标号)。
然后给你一个 NCity * NCity 的矩阵,表示站点间的两两距离。即这个矩阵中第 i 行 第 j 列的元素表示站点 i 和站点 j 的距离。(0<=距离<=1000)
再然后有一个整数K(1<=K<=7),表示Lele拉上车的人数。
接下来的一行里包括 K 个整数,代表上车的人分别要去的站点。(0<站点<ncity) <="" p="">
注意:
对于每组测试,Lele都是在站点0拉上乘客的。
Output
对于每一组测试,在一行内输出一个整数,表示最短路线的长度。
Sample Input
3
0 1 2
1 0 3
2 3 0
3
1 1 2
0
Sample Output
4
思路:这道题是看大神的代码,出现的奇迹。
这个题首先都在站点0的地方,等待被送。因为人数已经默认,对于相同目的地(也即是相同站点的人)可以直接一起送到,然后再到其他站点即可。之前还以为还要回到站点0,再拉人,实际上是一起拉走的。所以先对要拉的人去往的站点进行排序,缩减到都是不同的站点,放入b数组中。先是0站点到b[0]站点的距离,与b[0]站点和b[1]站点,与b[1]和b[2]站点……求和,b 数组要全排列,因为0站点可以先到任意一个站点,来求路程的最小值。
我的代码:
#include
#include
using namespace std;
int main()
{
int N,i,j,k;
int a[][];
int b[];
int sum;
while((cin>>N) &&N)
{
int min=;
for(i=;i<N;i++)
{
for(j=;j<N;j++)
cin>>a[i][j];
}
cin>>k;//人数
for(i=;i<k;i++)
cin>>b[i];//站点
sort(b,b+k);
for(i=;i<k-;i++)
{
if(b[i]==b[i+])
{
for(j=i;j<k-;j++)
b[j]=b[j+]; //缩减成为各不相同的站点
k--;
i--;
}
}
do
{
sum=a[][b[]];
for(i=;i<k;i++)
sum+=a[b[i-]][b[i]];
if(sum<min)
min=sum;
}while(next_permutation(b,b+k)); //可以对b数组中的元素进行排列。
cout<<min<<endl;
}
return ;
}
C - 下沙小面的(2)的更多相关文章
- hdu1527下沙小面的(二)
B - 下沙小面的(2) Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- hdu 1267 下沙的沙子有几粒? (递推)
下沙的沙子有几粒? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- HDU——1267 下沙的沙子有几粒?
下沙的沙子有几粒? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- hdu 1292 "下沙野骆驼"ACM夏令营 (递推)
"下沙野骆驼"ACM夏令营 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- Win环境下Oracle小数据量数据库的物理备份
Win环境下Oracle小数据量数据库的物理备份 环境:Windows + Oracle 单实例 数据量:小于20G 重点:需要规划好备份的路径,建议备份文件和数据库文件分别存在不同的存储上. 1.开 ...
- 利用overflow实现导航栏中常 出现的倒三角下拉小图标
常用网页界面中,导航栏中的倒三角下拉小图标实现,可用overflow: 效果如右图: .Triangle{position:relative;width:280px;height:15px;} ;ov ...
- 使用position:relative制作下边框下的小三角
在制作tab选项卡的时候,有时会有下边框,且下边框下另一个头向下的小三角,这全然能够用css来实现,而不必使用背景图片. 由于使用背景图片时会有一个问题,选项卡内容字数不同.导致使用背景图片时无法控制 ...
- Ubuntu16.04下沙盒数据导入到 Neo4j 数据库(图文详解)
不多说,直接上干货! 参考博客 http://blog.csdn.net/u012318074/article/details/72793914 (表示感谢) 前期博客 Neo4j沙盒实验申请过 ...
- linux下安装小鹤双拼-鹤形
首先安装小小拼音.发现小小拼音真是一个良心软件 http://yong.dgod.net/ 进入下载页面.我是下载 解压版的 解压缩后.放在主目录里.可以改成.yong 隐藏起来 安装步骤(前人栽树, ...
随机推荐
- JSF简单介绍
JSF简单介绍 一. 什么是 JSF: JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架.它提供了一种以组件为中心来开发 Java Web 用户界 ...
- 开发汉澳即时通信网,2006年上线,QQ死期到了
为汉澳sinox用户打造即时通信网让大家用上即时通信软件 近期腾讯关闭了linuxQQ登录,汉澳 sinox也登陆不上.非windows用户再也不能用上即时通信软件了! 这是多么可悲的事,可是我们必须 ...
- sqlserver 死锁查看辅助存储过程
USE [master] GO /****** Object: StoredProcedure [dbo].[sp_who_lock] Script Date: 03/23/2016 14:17:49 ...
- ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE
SQL> alter system set smtp_out_server='smtp.126.com' scope=both;alter system set smtp_out_server= ...
- Neo4j简介
Neo4j简介 发表于2013年3月16日 11:52 p.m. 位于分类图数据库与图并行计算 现实中很多数据都是用图来表达的,比如社交网络中人与人的关系.地图数据.或是基因信息等等.RDBMS ...
- Objective-c开发教程--MRC和ARC混编
iOS5.0以后就开始可以使用ARC来代替之前的MRC. 1.ARC中使用MRC的类.方法如下: 在targets的build phases选项下Compile Sources下选择要不使用arc编译 ...
- js获取当前url参数的两方式
方法一:正则分析法function getQueryString(name) { var reg = new RegExp("(^|&)" + name + &quo ...
- 移动端下网页border:1px显示
解决这个问题之前首先要了解移动前端开发viewport的概念,自己写了一篇很粗糙viewport详解的文章对它有了一个很简单的理解.这里推荐一篇很详细的博文<<移动前端开发之viewpor ...
- easyui datagrid 列的内容超出所定义的列宽时,自动换行
定义表单 nowrap="false"可以使得列中的内容超出所定义的列宽是就会自动换行pagination : true, // 当true时在DataGrid底部显示一个分页工 ...
- HTML5学习笔记之Input类型
Input类型——email email类型用于包含email地址的输入域,在输入地址时会自动验证email域的值 例:Email:<input type="email" n ...