题目在这里啊题目在这里~

Hamilton路径:将所有点都遍历刚好一次的路径

思路:

数据范围比较小(1~20),所以我们可以考虑暴力中的枚举

数组f[i][j]​ i的二进制表示选取了哪些点 j表示以哪个点结尾

然后就是状态压缩

由于求的是最小值,所以一开始的时候要赋初值INF

为了有解,f[1][0]应该赋值为0.

  1. #include<bits/stdc++.h>
  2. #define INF 0x7f7f7f7f
  3. #define Max (1<<n)
  4. using namespace std;
  5. int n;
  6. int a[20][20];
  7. int f[1<<20][20];
  8. int res;
  9. int read()
  10. {
  11. int s=0;
  12. char c=getchar();
  13. while(!isdigit(c))
  14. c=getchar();
  15. while(isdigit(c))
  16. {
  17. s=(s<<1)+(s<<3)+c-'0';
  18. c=getchar();
  19. }
  20. return s;
  21. }
  22. void Hamilton()
  23. {
  24. int i,j,k;
  25. f[1][0]=0;
  26. for(i=2;i<Max;i++)
  27. {
  28. for(j=0;j<n;j++)
  29. {
  30. f[i][j]=INF;
  31. if((i>>j)&1)
  32. {
  33. res=i^(1<<j);
  34. for(k=0;k<n;k++)
  35. if((res>>k)&1)
  36. f[i][j]=min(f[i][j],f[res][k]+a[k][j]);
  37. }
  38. }
  39. }
  40. return;
  41. }
  42. int main()
  43. {
  44. int i,j;
  45. n=read();
  46. for(i=0;i<n;i++)
  47. for(j=0;j<n;j++)
  48. a[i][j]=read();
  49. Hamilton();
  50. printf("%d\n",f[Max-1][n-1]);
  51. return 0;
  52. }

「算法竞赛进阶指南」0x01 最短Hamilton路径 解题报告的更多相关文章

  1. 「算法竞赛进阶指南」0x01 位运算 知识笔记

    二进制是计算机的根本! 你了解她它吗? int lowbit(int x) { return x&(-x);//x&(~x+1),~x=-1-x; } int __builtin_ct ...

  2. 算法竞赛进阶指南 0x00 基本算法

    放在原来这个地方不太方便,影响阅读体验.为了读者能更好的刷题,另起一篇随笔. 0x00 基本算法 0x01 位运算 [题目][64位整数乘法] 知识点:快速幂思想的灵活运用 [题目][最短Hamilt ...

  3. bzoj 1787 && bzoj 1832: [Ahoi2008]Meet 紧急集合(倍增LCA)算法竞赛进阶指南

    题目描述 原题连接 Y岛风景美丽宜人,气候温和,物产丰富. Y岛上有N个城市(编号\(1,2,-,N\)),有\(N-1\)条城市间的道路连接着它们. 每一条道路都连接某两个城市. 幸运的是,小可可通 ...

  4. POJ1639 算法竞赛进阶指南 野餐规划

    题目描述 原题链接 一群小丑演员,以其出色的柔术表演,可以无限量的钻进同一辆汽车中,而闻名世界. 现在他们想要去公园玩耍,但是他们的经费非常紧缺. 他们将乘车前往公园,为了减少花费,他们决定选择一种合 ...

  5. 《算法竞赛进阶指南》0x10 基本数据结构 Hash

    Hash的基本知识 字符串hash算法将字符串看成p进制数字,再将结果mod q例如:abcabcdefg 将字母转换位数字(1231234567)=(1*p9+2*p8+3*p7+1*p6+2*p5 ...

  6. 《算法竞赛进阶指南》1.4Hash

    137. 雪花雪花雪花 有N片雪花,每片雪花由六个角组成,每个角都有长度. 第i片雪花六个角的长度从某个角开始顺时针依次记为ai,1,ai,2,-,ai,6. 因为雪花的形状是封闭的环形,所以从任何一 ...

  7. 算法竞赛进阶指南--快速幂,求a^b mod p

    // 快速幂,求a^b mod p int power(int a, int b, int p) { int ans = 1; for (; b; b >>= 1) { if (b &am ...

  8. 算法竞赛进阶指南0x36组合计数

    概述 AcWing211. 计算系数 #include <bits/stdc++.h> using namespace std; const int mod = 10007 ; int k ...

  9. 算法竞赛进阶指南0x14 Hash

    组成部分: 哈希函数: 链表 AcWing137. 雪花雪花雪花 因为所需要数据量过于大,所以只能以O(n)的复杂度. 所以不可能在实现的过程中一一顺时针逆时针进行比较,所以采用一种合适的数据结构. ...

随机推荐

  1. 学习C#泛型

    C#泛型详解 C#菜鸟教程 C#中泛型的使用

  2. Eclipse里编辑代码,进度条出现“Remote System Explorer Operation”解决方法

    Eclipse里编辑代码,进度条出现"Remote System Explorer Operation",导致Eclipse有卡顿. 解决方法: Eclipse -> Pre ...

  3. JAVA之NIO按行读写大文件,完美解决中文乱码问题

    ;//一次读取的字节长度 File fin = new File("D:\\test\\20160622_627975.txt");//读取的文件 File fout = new  ...

  4. 得到Access数据库中所有表名

    public static List<string> GetShemaTables(string db)        {                        string pa ...

  5. Python--day65--模板语言之变量相关语法

    Django的模板语言: 1.目前已经学过的模板语言: 2,模板语言总结: 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Djan ...

  6. Python--day63--添加书籍和修改表结构的注意事项

  7. java DOM 操作xml

    1 代码如下: package dom.pasing; import java.io.IOException; import java.io.StringWriter; import javax.xm ...

  8. php_sphinx安装使用

    Sphinx的简介: Sphinx是一个独立的全文索引引擎,意图为其他应用提供高速.低空间 占用.搜索结果高相关度的全文搜索功能.Sphinx可以非常容易的与 SQL数据库和脚本语言集成.内置MySQ ...

  9. 2018-2-13-win10-uwp-获取指定的文件-AQS

    title author date CreateTime categories win10 uwp 获取指定的文件 AQS lindexi 2018-2-13 17:23:3 +0800 2018-2 ...

  10. Mail.Ru Cup 2018 Round 2 C. Lucky Days(拓展欧几里得)

    传送门 待参考资料: [1]:https://www.cnblogs.com/Patt/p/9941200.html •题意 a君,b君存在幸运周期: a君在第[ L1+k·t1,R1+k·t1]天为 ...