Problem

这题的题意是 求一条 经过 起点和终点的 最长路径。且一个点只能经过一次。

我们设定 \(dis_{i,j}\) 为 i 到 j 的距离(应该没有重边)

要注意的是 不能用 \(Floyd\) 求最长路 这样会挂掉

因为你这样 就没办法保证 点 \(i\) 只经过一次

显然是状压dp 我们考虑 dp 状态 \(dp_{i,j}\)

\(i\) 表示当前位置 \(j\)表示走过的地方

  1. #include<bits/stdc++.h>
  2. using namespace std ;
  3. #define int long long
  4. #define fi first
  5. #define se second
  6. #define pb push_back
  7. inline int read() {
  8. register int x = 0 , f = 1 ;
  9. register char c = getchar() ;
  10. for( ; ! isdigit(c) ; c = getchar()) if(c == '-') f = -1 ;
  11. for( ; isdigit(c) ; c = getchar()) x = (x << 1) + (x << 3) + (c & 15) ;
  12. return x * f ;
  13. }
  14. template < typename T > inline bool cmax(T & x , T y) {
  15. return x < y ? (x = y) , 1 : 0 ;
  16. }
  17. template < typename T > inline bool cmin(T & x , T y) {
  18. return x > y ? (x = y) , 1 : 0 ;
  19. }
  20. template < typename T > inline bool cabs(T & x) {
  21. return x > 0 ? 1 : (x = - x) , 0 ;
  22. }
  23. inline int QP(int x , int y , int Mod) {
  24. int ans = 1 ;
  25. for( ; y ; y >>= 1 , x = (x * x) % Mod)
  26. if(y & 1) ans = (ans * x) % Mod ;
  27. return ans ;
  28. }
  29. int n , m ;
  30. const int N = 19 ;
  31. int dis[N][N] ;
  32. int dp[N][1 << N] ;
  33. signed main() {
  34. memset(dis , 0xcf , sizeof(dis)) ;
  35. memset(dp , 0xcf , sizeof(dp)) ;
  36. n = read() , m = read() ;
  37. for(register int i = 1 ; i <= m ; i ++) {
  38. int u = read() , v = read() , w = read() ;
  39. dis[++ u][++ v] = w ;
  40. }
  41. for(register int i = 2 ; i <= n ; i ++) dp[i][1 + (1 << i - 1)] = dis[1][i] ;
  42. int s = (1 << n) - 1 ;
  43. for(register int i = 2 ; i <= s ; i ++) {
  44. for(register int j = 1 ; j <= n ; j ++) {
  45. if((i & (1 << j - 1)))
  46. for(register int k = 1 ; k <= n ; k ++) {
  47. if(j ^ k && (! (i & (1 << k - 1)))) {
  48. cmax(dp[k][i | (1 << k - 1)] , dp[j][i] + dis[j][k]) ;
  49. }
  50. }
  51. }
  52. }
  53. int ans = 0 ;
  54. for(register int i = (1 << n - 1) + 1 ; i <= s ; i ++)
  55. cmax(ans , dp[n][i]) ;
  56. printf("%lld\n" , ans) ;
  57. return 0 ;
  58. }

P4802 [CCO 2015]路短最的更多相关文章

  1. [ CCO 2015 ] Artskjid

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

  2. linuxtoy.org资源

    https://linuxtoy.org/archives.html Archives 在 Android 系统上安装 Debian Linux 与 R (2015-07-14) Pinos:实现摄像 ...

  3. HDU 2544 最短路 (最短路,spfa)

    题意:中文题目 思路:spfa+SLF优化.关于SPFA的详情请戳我 #include <bits/stdc++.h> using namespace std; , INF=0x7f7f7 ...

  4. POJ 3255 Roadblocks (次短路 SPFA )

    题目链接 Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...

  5. 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

    2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...

  6. java攻城师之路(Android篇)--搭建开发环境、拨打电话、发送短信、布局例子

    一.搭建开发环境 1.所需资源 JDK6以上 Eclipse3.6以上 SDK17, 2.3.3 ADT17 2.安装注意事项 不要使用中文路径 如果模拟器默认路径包含中文, 可以设置android_ ...

  7. 路冉的JavaScript学习笔记-2015年2月5日

    1.为Js原始值创建临时对象,并进行属性引用 var s="text"; s.len=4;//这里Js调用new String(s)的方法创建了一个临时对象,用来属性引用 cons ...

  8. 单路CPU性能排名 更新于2015.10.6

    http://itianti.sinaapp.com/index.php/cpu 排名 处理器 图例 分数 1 Intel Xeon E5-2699 v3 @ 2.30GHz 22892 2 Inte ...

  9. 2015暑假acm短训小结

    时间很快,短训已经结束,短短20天,心里有一些思绪想要记下. 收获: 从最近发的随笔中可以看出,做得最多的是搜索——Dfs,Bfs.对于搜索,如何描述状态,如何压缩状态,如何决定下一个结点,是否可以剪 ...

随机推荐

  1. 自学笔记系列:《Python学习手册 第五版》 -写在开始之前

    今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...

  2. MySQL必知必会官方提供的数据库和表

    创建表 Create customers table CREATE TABLE customers ( cust_id int NOT NULL AUTO_INCREMENT, cust_name c ...

  3. html input元素的所有type属性

    <input /> 属性 type="text" 输入框的类型为文本 type="password" 输入框的类型为密码 type="ra ...

  4. python OpenCV安装

    linux系统 yum install -y libSM.x86_64 libXext.x86_64 libXrender.x86_64 pip install numpy Matplotlib pi ...

  5. 访问控制列表 ACL

    访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包.其目的是为了对某种访问进行控制. 作用 ACL可以限制网络流量.提高网络性能. ...

  6. [Redis-CentOS7]Redis安装(-)

    系统环境 CentOS Linux release 7.7.1908 (Core) yum安装 yum install redis Loaded plugins: fastestmirror Load ...

  7. python安装模块速度慢的解决方法

    1.Win+R,cmd 2.pip install pqi 3.pqi use aliyun

  8. cornerstone使用beyond compare比较工具

    prefrences->general->external compare tool->open script foder 新建一个bc.sh文件(名字可以任意,sh后缀即可)保存到 ...

  9. python 解压、复制、删除 文件

    一.python3解压文件 1.python 解压文件代码示例 如下代码主要实现zip.rar.tar.tar.gz四种格式的压缩文件的解压 def unzip_file(src_file, dst_ ...

  10. 量化投资学习笔记27——《Python机器学习应用》课程笔记01

    北京理工大学在线课程: http://www.icourse163.org/course/BIT-1001872001 机器学习分类 监督学习 无监督学习 半监督学习 强化学习 深度学习 Scikit ...