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

该死的题让我想起来艾斯之死...

 首先想到dp(i)代表从1到【i表示的这些岛屿】所花的最小时间,然后每次枚举最后一个岛屿以此缩小范围,但发现枚举了最后一个岛屿后没有办法转移,因为不知道倒数第二个岛屿是什么,随着倒数第二个岛屿的不同,时间的增加也会不同,也就是不具备【无后效性】。

因此想到再加一个参数去约束当前问题的状态,dp(i,j)代表1到【i代表的这些点】所需的最少时间,且这趟旅程的最后一个岛屿是j,这样就可转移了,每次枚举倒数第二岛屿;答案就是dp( (1<<n) -1,n )

具体的位运算来判断i有没有包含k岛屿,自己拿笔推一下就行了

 1 #include<iostream>
 2 #define INF 1000000000
 3 using namespace std;
 4 
 5 int a[20][20],n;
 6 int memo[66000][20];
 7 
 8 int dp(int i,int j){//dp[i,j]代表1到【i代表的这些点】所需的最少时间,且这趟旅程到的最后一个点在j 
 9     if( j==1 && i!=1 ) return memo[i][j] = INF; //只有当旅程只包含1的时候最后一个到的点才能是1 
10     if(memo[i][j]!=INF) return memo[i][j];
11     if( i == 1 && j==1 )  return memo[i][j]=0;
12     //枚举倒数第二个岛屿在哪
13     for(int k=1;k<n;k++){
14         if(k==j) continue;//倒数第二个岛不能是倒数第一个岛 
15         if( i & 1<<(k-1) ) memo[i][j] = min( memo[i][j], dp(i- (1<<(j-1)),k)+a[k][j] );
16     }
17     return memo[i][j];
18 }
19 
20 int main(){
21     for(int i=1;i<66000;i++)
22         for(int j=1;j<20;j++) memo[i][j]=INF;
23     
24     cin>>n;
25     for(int i=1;i<=n;i++)
26         for(int j=1;j<=n;j++) cin>>a[i][j];
27     
28     //固定起点为1和终点为N
29     cout<<dp( (1<<n)-1,n );
30     return 0;
31 }

 

转载于:https://www.cnblogs.com/ZhenghangHu/p/9368618.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] 举例说明BFC会与float元素相互覆盖吗?为什么?

[css] 举例说明BFC会与float元素相互覆盖吗&#xff1f;为什么&#xff1f; BFC的区域不会与float的元素区域重叠 计算BFC的高度时&#xff0c;浮动子元素也参与计算 BFC就是页面上的一个隔离的独立容器&#xff0c;容器里面的子元素不会影响到外面元素&#xff0c;反之亦然个…

Sublime Text 3 、WebStorm配置实时刷新

本文所用软件版本Sublime Text 3(Build 3143)、WebStorm 2017.2.4(Build #WS-172.4155.35)、Google Chrome v61.0.3163.100&#xff0c;其他版本软件配置过程可能不一样&#xff0c;请知悉&#xff01; 一.Google Chrome安装LiveReload插件 1.下载插件 LiveReload 2.1.0 链…

#0 scrapy爬虫学习中遇到的坑记录

python 基础学习中对于scrapy的使用遇到了一些问题。 首先进行的是对Amazon.cn的检索结果页进行爬取&#xff0c;很顺利&#xff0c;无碍。 下一个目标是对baidu的搜索结果进行爬取 1&#xff0c;反爬虫 1.1 我先对ROBOTSTXT_OBEY进行设置&#xff0c;结果找到了scrapy的默认参…

[css] 使用css如何设置背景虚化?

[css] 使用css如何设置背景虚化&#xff1f; filter: blur(5px);个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Sublime Text 3 、WebStorm配置护眼主题(浅绿色)

本文所用软件版本Sublime Text 3(Build 3143)、WebStorm 2017.2.4(Build #WS-172.4155.35)&#xff0c;其他版本软件配置过程可能不一样&#xff0c;请知悉&#xff01; 1.Sublime Text 3护眼主题 &#xff08;1&#xff09;下载配置文件 链接&#xff1a;http://pan.baidu.…

angular - 如何运行在起来 - 使用nginx

nginx下载地址&#xff0c;使用的是标准版的&#xff1a; 点击下载nginx nginx下载完后&#xff0c;解压 dist文件夹下面所有angular文件放入html文件夹中. 最后命令行cd到当前nginx.exe目录&#xff0c;启动命令&#xff1a;nginx 再配置一下conf文件夹下面的nginx.conf 再loc…

[css] 举例说明background-repeat的新属性值:round和space的作用是什么?

[css] 第 举例说明background-repeat的新属性值&#xff1a;round和space的作用是什么&#xff1f; space 背景图不会产生缩放&#xff0c;会被裁切 round 缩放背景图至容器大小&#xff08;非等比例缩放&#xff09;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…

Java学习资料汇总(JavaSE+JavaEE+数据库+框架+笔试题+面试题)

在写下这篇文章的时候&#xff0c;我还在找工作。理解每一个真正对编程感兴趣的小伙伴的转行不易&#xff0c;于是就把自己这几个月搜索到的学习资料一一分享给大家。 3.数据库 MySQL5.7 Reference Manual https://dev.mysql.com/doc/refman/5.7/en/ SQL中主键与外键的定义和…

2018 Multi-University Training Contest 1 Balanced Sequence(贪心)

题意&#xff1a; t组测试数据&#xff0c;每组数据有 n 个只由 ( 和 ) 构成的括号串。 要求把这 n 个串排序然后组成一个大的括号串&#xff0c;使得能够匹配的括号数最多。 如()()答案能够匹配的括号数是 4&#xff0c;(()) 也是 4。 例如&#xff1a; n 2 ) )(( 你可以将其…

[css] 举例说明with属性的fill-available有什么应用场景

[css] 举例说明with属性的fill-available有什么应用场景 一些 div 元素默认宽度 100% 父元素&#xff0c;这种充分利用可用空间的行为就称为 fill-available。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一…

第一部分 Java:面向对象理解

Java&#xff1a;面向对象理解、集合、IO、NIO、并发、反射源码分析 一.面向对象 1.创建对象的5种方式 (1)使用new关键字(2)使用Class类的newInstance方法(3)使用构造函数类的newInstance方法(4)使用clone方法 --》未实现Cloneable会报错(5)使用反序列化5动态代理2.this、sup…

[css] width属性的min-content和max-content有什么作用

[css] width属性的min-content和max-content有什么作用 max-content 在一个父元素上设置该元素后&#xff0c;元素的宽度会以子元素内最长的一个为准&#xff0c;子元素表现得会好像设置了white-space:nowrap一样一行展示min-content 在一个父元素上设置该元素后&#xff0c;子…

js拖拽

function drag(cla1,cla2,index){//鼠标可拖拽区域的dom&#xff0c;被拖拽的dom元素,索引var disX 0; //鼠标到dom元素左边距离var disY 0; //鼠标到dom元素上边距离var oDiv1 document.getElementsByClassName(cla1)[index];var oDiv2 document.getElementsByClassName(c…

[css] 你用过outline属性吗?它有什么运用场景

[css] 你用过outline属性吗&#xff1f;它有什么运用场景 outline &#xff08;轮廓&#xff09;是绘制于元素周围的一条线&#xff0c;位于边框边缘的外围&#xff0c;可起到突出元素的作用。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#x…

Centos7搭建Java环境,并设置项目自启动脚本、定时数据库备份/日志清理脚本

开发环境下载&#xff0c;提供nginx-1.12.2、jdk-8u162、Jenkins下载 建个文件夹&#xff0c;作为开发环境存放路径 cd /usr mkdir developmentEnvironment cd /一.java 1.解压包 tar -zxvf jdk-8u162-linux-x64.tar.gz -C /usr/developmentEnvironment2.配置环境变量 vi…

【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--参数自动映射篇(6/8)...

文章目录 前情概要 路由、action的扫描、发现、注册搞定之后&#xff0c;后来我发现在我们的action里面获取参数往往都是通过request对象来一个一个获取。同样的一行代码我们不厌其烦的重复写了无数次。遂想着那我们能不能像后端程序一样做得更自动化一些呢&#xff1f; 所以&a…

Java String常用的数据类型转换

工作写代码经常遇到string的数据类型转换&#xff0c;每次都去搜索如何转换很不方便。写篇博客做个总结&#xff0c;以后看这篇就好了。 1.string-bigDecimal 2.string-date Testpublic void StringToDate() throws ParseException {Date date new SimpleDateFormat("yy…

深度学习之Batch Normalization

1、Batch Normalization的引入 在机器学习领域有个很重要的假设&#xff1a;IID独立同分布假设&#xff0c;也就是假设训练数据和测试数据是满足相同分布的&#xff0c;这是通过训练数据获得的模型能够在测试集上获得好的效果的一个基本保障。在深度学习网络中&#xff0c;后一…

[css] 为什么说css的选择器一般不要超过三级?

[css] 为什么说css的选择器一般不要超过三级&#xff1f; CSS的解析过程&#xff0c;在解析选择器的时候&#xff0c;是从右向左&#xff0c;从上到下及逆行解析的。 超过三级会使的css解析树复杂度呈指数级增加&#xff0c;降低css加载性能个人简介 我是歌谣&#xff0c;欢迎…

调用支付宝接口 alipay.data.bill.accountlog.query,提示:ISV权限不足

使用环境&#xff1a;正式环境 接口名称&#xff1a;alipay.data.bill.accountlog.query(支付宝商家账户账务明细查询) 提示&#xff1a;ISV权限不足&#xff0c;建议在开发者中心检查签约是否已经生效 参考&#xff1a; 支付宝商家账户账务明细查询接口文档 自己按照支付宝官…