poj 4124:海贼王之伟大航路
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:海贼王之伟大航路相关推荐
- bailianoj 4124海贼王之伟大航路
bailianoj 4124海贼王之伟大航路 题目大意 以第一个岛为起点,最后一个岛为终点.问从第一个岛到最后一个岛所需要的的最短时间是多少.其中岛i到岛i所需花费的时间为0,岛i岛到j的时间和岛j到 ...
- 北京大学OpenJudge 4124:海贼王之伟大航路
4124:海贼王之伟大航路 总时间限制: 1000ms 内存限制: 65536kB 描述 "我是要成为海贼王的男人!",路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的 ...
- POJ h0248.海贼王之伟大航路
海贼王之伟大航路 "我是要成为海贼王的男人!",路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的艰险历程. 路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿 ...
- 18.06.27 POJ百练 4124海贼王之伟大航路
描述 "我是要成为海贼王的男人!",路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的艰险历程. 路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿着" ...
- OpenJudge 4124 海贼王之伟大航路 深搜剪枝
Description "我是要成为海贼王的男人!",路飞一边喊着这样的口号,一边和他的伙伴们一起踏上了伟大航路的艰险历程. 路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那 ...
- 源哥每日一题第十三弹 百练4124:海贼王之伟大航路 状压dp
连接:http://bailian.openjudge.cn/practice/4124 题意:从1到n走过所有点恰好一次最短时间.乱搞的话会完美的超时(阶乘级别的复杂度,虽然范围很小,但是也足够超时 ...
- 百练4124:海贼王之伟大航路
路飞他们伟大航路行程的起点是罗格镇,终点是拉夫德鲁(那里藏匿着"唯一的大秘宝"--ONE PIECE).而航程中间,则是各式各样的岛屿. 因为伟大航路上的气候十分异常,所以来往任意 ...
- POJ 4979 海贼王之伟大航路 【状压dp】【北大ACM/ICPC竞赛训练】
该死的题让我想起来艾斯之死... 首先想到dp(i)代表从1到[i表示的这些岛屿]所花的最小时间,然后每次枚举最后一个岛屿以此缩小范围,但发现枚举了最后一个岛屿后没有办法转移,因为不知道倒数第二个岛屿 ...
- 百练4124:海贼王之伟大航路(状压DP)
题目来源:http://bailian.openjudge.cn/practice/4124/ 4124:海贼王之伟大航路 总时间限制: 1000ms 内存限制: 65536kB 描述 " ...
最新文章
- 物体检测丨从R-CNN到Mask R-CNN
- LeaFlet学习之结合turf.js生成简单的等值线demo
- jpa 实体图查询_JPA实体图
- js调用python接口_JavaScript如何调用Python后端服务
- Typecho webstack开源导航主题
- 【C++】类的成员初始化表与构造函数内赋值操作
- 让你的微信私人账号也具备公众账号的 关键字回复功能
- 栈应用---元素出栈、入栈顺序的合法性判断
- SqlServer 2017 下载地址及密钥下载地址
- (转)《C++ Qt 编程视频教程》(C++ Qt Programming)[MP4]
- 用计算机画图截图图片,电脑怎么截图
- blast2go mysql_blast2go本地化-2017教程
- 微博如何取消关注不存在的_为什么“取消文化”将继续存在
- windows磁盘管理压缩卷只能压缩一部分的问题解决办法
- 我工作上常用的--测试用例文档模板
- 地理遥感专业属于计算机行业吗,遥感科学与技术专业怎么样?
- 测试emmc读写速度软件,真机闪存实测:闪存读取速度到底什么鬼差距有多大建议收藏...
- [RoCE]RDMA over Converged Ethernet模式以及配置
- shell基础+强化
- 云上未来,数智导航:阿里云研究院报告合集
热门文章
- sap badi s4 MIGO屏幕实施测试
- Ambari2.7.4 + HDP3.1.4 离线安装(2)
- 云计算架构中的Iaas、Paas、SaaS详解
- 5种AI编程语言优缺点比较,谁才是程序员心中的白月光
- ubuntu18.04 install 安装postgresql9.6 解决重音不敏感”排序规则,以及扩展pgcrypto函数
- 深度学习——Noisier2Noise
- JAVA MemCache 史无前例的详细讲解
- 企业邮箱Foxmail提示错误421 too many connections
- 【问题3】:Kaggle练习题《房价预测》----分别采用的岭回归,随机森林,bagging模型,AdaBoost,XgBoost等。
- 【数理统计】调和平均值