4124:海贼王之伟大航路

  • 查看
  • 提交
  • 统计
  • 提示
  • 提问
总时间限制: 
1000ms 
内存限制: 
65536kB
描述

“我是要成为海贼王的男人!”,路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的艰险历程。

路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿着“唯一的大秘宝”——ONE PIECE)。而航程中间,则是各式各样的岛屿。

因为伟大航路上的气候十分异常,所以来往任意两个岛屿之间的时间差别很大,从A岛到B岛可能需要1天,而从B岛到A岛则可能需要1年。当然,任意两个岛之间的航行时间虽然差别很大,但都是已知的。

现在假设路飞一行从罗格镇(起点)出发,遍历伟大航路中间所有的岛屿(但是已经经过的岛屿不能再次经过),最后到达拉夫德鲁(终点)。假设他们在岛上不作任何的停留,请问,他们最少需要花费多少时间才能到达终点?

输入
输入数据包含多行。
第一行包含一个整数N(2 < N ≤ 16),代表伟大航路上一共有N个岛屿(包含起点的罗格镇和终点的拉夫德鲁)。其中,起点的编号为1,终点的编号为N。
之后的N行每一行包含N个整数,其中,第i(1 ≤ i ≤ N)行的第j(1 ≤ j ≤ N)个整数代表从第i个岛屿出发到第j个岛屿需要的时间t(0 < t < 10000)。第i行第i个整数为0。
输出
输出为一个整数,代表路飞一行从起点遍历所有中间岛屿(不重复)之后到达终点所需要的最少的时间。
样例输入
样例输入1:
4
0 10 20 999
5 0 90 30
99 50 0 10
999 1 2 0样例输入2:
5
0 18 13 98 8
89 0 45 78 43
22 38 0 96 12
68 19 29 0 52
95 83 21 24 0
样例输出
样例输出1:
100样例输出2:
137
提示
提示:
对于样例输入1:路飞选择从起点岛屿1出发,依次经过岛屿3,岛屿2,最后到达终点岛屿4。花费时间为20+50+30=100。
对于样例输入2:可能的路径及总时间为:
1,2,3,4,5: 18+45+96+52=211
1,2,4,3,5: 18+78+29+12=137
1,3,2,4,5: 13+38+78+52=181
1,3,4,2,5: 13+96+19+43=171
1,4,2,3,5: 98+19+45+12=174
1,4,3,2,5: 98+29+38+43=208
所以最短的时间花费为137
单纯的枚举在N=16时需要14!次运算,一定会超时。
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
using namespace std;
int a[25][25];
int n;
int ans=0x7fffffff/2;
bool tag[16][1<<16];
int bj[16][1<<16];
void dfs(int cur,int state,int s)
{tag[cur][state]=true;bj[cur][state]=s;if(cur==(n-1)&&state!=((1<<n)-1)) return;if(s>=ans) return;if(cur==(n-1)&&state==((1<<n)-1)){ans=min(ans,s);return;}for(int i=0;i<n;++i){if(!(state&(1<<i))&&(!tag[i][(state|(1<<i))]||bj[i][(state|(1<<i))]>s+a[cur][i])){dfs(i,state|(1<<i),s+a[cur][i]);}}
}
int main()
{memset(tag,0,sizeof(tag));cin>>n;for(int i=0;i<n;++i){for(int j=0;j<n;++j){cin>>a[i][j];}}dfs(0,1,0);cout<<ans<<endl;return 0;
}

poj 4124:海贼王之伟大航路相关推荐

  1. bailianoj 4124海贼王之伟大航路

    bailianoj 4124海贼王之伟大航路 题目大意 以第一个岛为起点,最后一个岛为终点.问从第一个岛到最后一个岛所需要的的最短时间是多少.其中岛i到岛i所需花费的时间为0,岛i岛到j的时间和岛j到 ...

  2. 北京大学OpenJudge 4124:海贼王之伟大航路

    4124:海贼王之伟大航路 总时间限制: 1000ms 内存限制: 65536kB 描述 "我是要成为海贼王的男人!",路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的 ...

  3. POJ h0248.海贼王之伟大航路

    海贼王之伟大航路 "我是要成为海贼王的男人!",路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的艰险历程. 路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿 ...

  4. 18.06.27 POJ百练 4124海贼王之伟大航路

    描述 "我是要成为海贼王的男人!",路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的艰险历程. 路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿着" ...

  5. OpenJudge 4124 海贼王之伟大航路 深搜剪枝

    Description "我是要成为海贼王的男人!",路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的艰险历程. 路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那 ...

  6. 源哥每日一题第十三弹 百练4124:海贼王之伟大航路 状压dp

    连接:http://bailian.openjudge.cn/practice/4124 题意:从1到n走过所有点恰好一次最短时间.乱搞的话会完美的超时(阶乘级别的复杂度,虽然范围很小,但是也足够超时 ...

  7. 百练4124:海贼王之伟大航路

    路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿着"唯一的大秘宝"--ONE PIECE).而航程中间,则是各式各样的岛屿. 因为伟大航路上的气候十分异常,所以来往任意 ...

  8. POJ 4979 海贼王之伟大航路 【状压dp】【北大ACM/ICPC竞赛训练】

    该死的题让我想起来艾斯之死... 首先想到dp(i)代表从1到[i表示的这些岛屿]所花的最小时间,然后每次枚举最后一个岛屿以此缩小范围,但发现枚举了最后一个岛屿后没有办法转移,因为不知道倒数第二个岛屿 ...

  9. 百练4124:海贼王之伟大航路(状压DP)

    题目来源:http://bailian.openjudge.cn/practice/4124/ 4124:海贼王之伟大航路 总时间限制: 1000ms  内存限制: 65536kB 描述 " ...

最新文章

  1. 初探系列 — Pharbers用于单点登录的权限架构
  2. pycharm如何查找程序项目中所有断点?
  3. 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和
  4. ABAP BSP的工具类CL_BSP_UTILITY
  5. visual studio installer可以卸载吗_ArcGIS 怎样彻底删除和卸载
  6. 重磅!DigiX极客校园大赛今日启动,超百万巨奖激励AI精英!
  7. vector内存分配和回收机制
  8. 中国武术和泰拳的对抗史
  9. python基于pip和conda配置国内安装源,提升下载安装性能
  10. java常用数据结构有哪些
  11. 注册测绘师 案例分析
  12. linux创建2g文件,嵌入式 创建一个2G的空文件(Linux命令dd)
  13. android 微博 登录,Android第三方登录之微博登录
  14. 智能营销增益模型(Uplift Modeling)实践整理
  15. 利用Python+xarray+cartopy+matplotlib 实现遥感地形图制图绘制 —— xarray 学习文档01
  16. 怎样在PLSQL Developer14(64bit)当中找到汉化版本?
  17. java root权限_Android应用获取Root权限
  18. 科研教育「双目视觉技术」首选!维视MV-VS220双目立体视觉系统开发平台
  19. 金融数据治理者视角:小微信用体系建设的进化路径
  20. 国内大陆有哪些芯片公司处于世界前10?一起看看!

热门文章

  1. 如何通过ssh远程访问Unix/Linux服务器上的html
  2. 编写一个c语言程序 杨辉三角,杨辉三角 c语言
  3. 成都的IT研发产业和芯片产业等情况:2006年初的数据。
  4. 马自达化身杠精?老子就是不用触摸屏!
  5. 又闹分裂?Node.js 被 fork 出一个项目 Ayo.js
  6. python100day day22 -Requests
  7. 致命错误: Call to undefined function mb_detect_encoding()
  8. mysql 嵌套查询性能_MySQL数据库之嵌套查询与连接查询的性能详解
  9. 【leetcode】脑子打结的题
  10. 利用计算机辅助设计,一种利用计算机辅助设计和制作手工栽绒毯的方法