\(\\\)

\(Description\)


\(N\)个点\(M\)条边的有向图,求从\(0\)号节点出发,\(N-1\)号节点结束,且图中每个点至多经过一次的最长路。

  • \(N\in[2,18]\)

\(\\\)

\(Solution\)


状压\(DP\)最长路。

记忆化搜索的写法,可以通过调整回溯值来保证终点一定是\(N-1\)号节点\((\)无法到达就返回负无穷\()\)。

直接状压\(DP\)初始化要注意设成负无穷,然后统计答案只计算当前点是\(N-1\)号点的情况。

\(\\​\)

\(Code\)


\(\\\)

记搜版本

#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 20
#define M 410
#define R register
#define gc getchar
#define inf 2000000000
using namespace std;inline int rd(){int x=0; bool f=0; char c=gc();while(!isdigit(c)){if(c=='-')f=1;c=gc();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=gc();}return f?-x:x;
}int n,m,tot,hd[N],f[1<<N][N];
struct edge{int w,to,nxt;}e[M];inline void add(int u,int v,int w){e[++tot].to=v; e[tot].w=w;e[tot].nxt=hd[u]; hd[u]=tot;
}int dfs(int u,int s){if(u==n-1) return 0;if(f[s][u]>0) return f[s][u];int ans=-inf;for(R int i=hd[u],v;i;i=e[i].nxt){v=e[i].to;if(s&(1<<v)) continue;ans=max(ans,e[i].w+dfs(v,(s|(1<<v))));}return f[s][u]=ans;
}int main(){n=rd(); m=rd();for(R int i=1,u,v,w;i<=m;++i){u=rd(); v=rd(); w=rd(); add(u,v,w);}printf("%d\n",dfs(0,1));return 0;
}

\(\\\)

直接状压版本

#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 20
#define M 410
#define R register
#define gc getchar
#define inf 2000000000
using namespace std;inline int rd(){int x=0; bool f=0; char c=gc();while(!isdigit(c)){if(c=='-')f=1;c=gc();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=gc();}return f?-x:x;
}int n,m,tot,ans,hd[N],f[1<<N][N];
struct edge{int w,to,nxt;}e[M];inline void add(int u,int v,int w){e[++tot].to=v; e[tot].w=w;e[tot].nxt=hd[u]; hd[u]=tot;
}int main(){n=rd(); m=rd();for(R int i=1,u,v,w;i<=m;++i){u=rd(); v=rd(); w=rd(); add(u,v,w);}int lim=(1<<n);for(R int s=0;s<lim;++s)for(R int u=0;u<n;++u) f[s][u]=-inf;f[1][0]=0;for(R int s=1;s<lim;++s){for(R int u=0;u<n;++u)if(((s&(1<<u))>0)&&f[s][u]>=0)for(R int i=hd[u],v;i;i=e[i].nxt){v=e[i].to; if((s&(1<<v))>0) continue;f[s|(1<<v)][v]=max(f[s|(1<<v)][v],f[s][u]+e[i].w);}ans=max(ans,f[s][n-1]);}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/SGCollin/p/9737969.html

[ CCO 2015 ] Artskjid相关推荐

  1. 龙岩学院计算机二级报名时间,福建龙岩学院2015年12月计算机等级考试报名通知...

    福建龙岩学院2015年12月计算机等级考试报名通知 各学院: 根据上级有关文件通知,2015年12月福建省高校学生计算机应用水平等级考试开始报名,现将有关事项通知如下: 一.考试内容: 本次一.二考试 ...

  2. 浙江大学通信与计算机网络,新浙大2015年通信与计算机网络离线作业.doc

    新浙大2015年通信与计算机网络离线作业 浙江大学远程教育学院 <通讯与计算机网络>课程作业 姓名:学 号:年级:14年春学习中心:温州学习中心 从资源共享的角度来定义计算机网络,计算机网 ...

  3. 计算机一级考试模拟题函数,2015年计算机一级考试模拟题(四)

    2015年计算机一级考试模拟题(四) 请用Word 2003对考生文件夹下WORD.DOC文档中的文字进行编辑.排版和保存,具体要求如下: (1)将标题段("十年后的家电")文字设 ...

  4. CV算法复现(分类算法5/6):ResNet(2015年 微软亚洲研究院)

    致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 目录 致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 1 本次要 ...

  5. mysql如何下载连接到visual_Visual Studio 2015 Community连接到Mysql

    Visual Studio 2015 Community连接到MySQL,步骤很简单,但刚弄的时候一脸懵,现在记录如下以作备忘: 安装好VS2015和Mysql后,只需要再安装两个东西即可. 一个是S ...

  6. 微软批量授权版WINDOWS 10资料(截至到2015年11月,此处无下载地址)

    微软批量授权版WINDOWS 10资料: 1.专业版: Windows 10 专业版(2015 年 7 月发布) WINDOWS 10专业版简体中文,32位/64位 SW_DVD5_Win_Pro_1 ...

  7. Enda 的 2015 下半年读书计划

    2015下半年的读书计划 php 方面 <PHP设计模式> <PHP核心技术与最佳实践> <learning php设计模式> <深入php> Mysq ...

  8. 计算机考试批处理试题,2015计算机三级考试pc技术模拟试题及答案(八)

    2015计算机三级考试pc技术模拟试题及答案(八) 1.关于Windows 98中的网上邻居的相关叙,( )是错误的. A.通过网上邻居可以游览和使用网上的全部计算机资源 B.通过网上邻居可以浏览网上 ...

  9. InstallShield 2015 LimitedEdition VS2012 运行bat文件

    转载:http://www.cnblogs.com/fengwenit/p/4271150.html  运行bat文件 网上很多介绍如何运行bat的方法,但我这个是limted 版本,不适用. 1. ...

最新文章

  1. python的应用领域-Python的应用领域
  2. php文件里直接写上?xml version=1.0 encoding=utf-8?出错?
  3. python绘制四边螺旋线代_解决python彩色螺旋线绘制引发的问题
  4. PHP生产一个验证码图片,PHP使用GD库生成验证码图片,实现图片验证
  5. 现代化蔬菜大棚采用什么和计算机自动控制,温室大棚自动控制系统存在的意义以及未来的发展...
  6. Unity UI和场景适配
  7. 一步步学习java后台(一)(IDEA, Spring, Maven, MyBatis)
  8. 【侯捷】C++面向对象高级编程(下)
  9. MYSQL排序加分页报错Out of sort memory, consider increasing server sort buffer size
  10. 正则表达式中/g的用法
  11. DB2性能调整优化问题
  12. VM虚拟机去虚拟化教程(三)修改内存品牌和序列号
  13. Google Play 开发者账户已被终止的通知
  14. 如何在java中添加照片_Java如何将图片添加到PPT幻灯片中?
  15. 日语中 “不得不”的6种表达,你都学会了吗?
  16. Hadoop和关系型数据库间的数据传输工具——Sqoop
  17. 计算机在工作中的表现英语回答,外企英语面试常用表达-12个方面总结.doc
  18. python 面向对象编程tcp_python面向对象、类、socket网络编程
  19. java实现五子棋游戏
  20. 使用blat实现在window系统下通过BAT批处理脚本发邮件功能

热门文章

  1. python各个解释器的用途-python解释器有哪些?
  2. python入门指南 小说-Python入门指南 作者:许半仙(4)
  3. python下载不了-python3下载不了
  4. python读取txt文件代码-Python实现读取txt文件并画三维图简单代码示例
  5. configparser模块和PyYAML模块生成和修改配置文件
  6. Material-UI使用
  7. LeetCode Counting Bits(动态规划)
  8. 系统管理员必学的30个Linux实用命令
  9. Java中的初始化顺序
  10. CF 976F 递增容量最大流