第一道状态压缩DP;

这道题要求一个无向图的最小权回路,要求经过所有点,所以可以任选一个点(这里选0)作为起点,以后的状态f[s, i]表示从0出发到i结束的最小权路径,最终求得f[1<<n-1, k]后要加上w[0, k],然后求最小值:

for k = 0:n-1

  ans = min(f[1<<n-1, k]+w[0, k]);

print(ans);

 1 # include <cstdio>
 2 # include <cstring>
 3
 4 # define N 15
 5 # define INF 0X1FFFFFFF
 6
 7 int n;
 8 int f[1<<N][N];
 9 int w[N][N];
10
11 int min(int x, int y)
12 {
13     return x<y ? x:y;
14 }
15
16 void print(int n, int s)
17 {
18     for (int i = n-1; i >= 0; --i)
19     {
20         printf((s>>i)&0x1 ? "1":"0");
21     }
22 }
23
24 int dp(int s, int j)
25 {
26     int &ans = f[s][j];
27     if (ans != -1) return ans;
28     if ((s&(~(1<<j))) == 1) return ans = w[0][j];
29     ans = INF;
30     for (int k = 1; k < n; ++k) if (k!=j && ((s>>k)&0x1))
31     {
32         ans = min(ans, dp(s&(~(1<<j)), k)+w[k][j]);
33     }
34     return ans;
35 }
36
37 void solve(void)
38 {
39     int ans = INF;
40     //if (n==0){puts("NoAnswer");return;}
41    // if (n==1){puts("0");return;}
42     for (int i = 0; i < (1<<n); ++i)
43         memset(f[i], -1, sizeof(int)*n);
44
45     f[1][0] = 0;
46     for (int i = 0; i < n; ++i)
47     {
48         ans = min(ans, dp((1<<n)-1, i)+w[0][i]);
49     }
50     if (ans < INF)
51         printf("%d\n", ans);
52     else
53         printf("NoAnswer\n");
54 }
55
56 void read_graph(void)
57 {
58     for (int i = 0; i < n; ++i)
59     for (int j = 0; j < n; ++j)
60     {
61         scanf("%d", &w[i][j]);
62         if (w[i][j] == 0 && i!=j)
63             w[j][i] = w[i][j] = INF;
64         else w[j][i] = w[i][j];
65     }
66 }
67
68 int main()
69 {
70     while (~scanf("%d", &n))
71     {
72         read_graph();
73         solve();
74     }
75
76     return 0;
77 }

涉及位运算,多加几个括号,避免出现优先级导致的问题。

转载于:https://www.cnblogs.com/JMDWQ/archive/2012/08/05/2623610.html

[状态压缩DP] COJ 1129 送货到家相关推荐

  1. 0x56. 动态规划 - 状态压缩DP(习题详解 × 7)

    目录 Problem A. 最短Hamilton路径 ProblemB. 蒙德里安的梦想 Problem C. Corn Fields Problem D. 小国王 Problem E. 炮兵阵地 P ...

  2. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  3. BZOJ1688|二进制枚举子集| 状态压缩DP

    Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...

  4. hdu1074 状态压缩dp+记录方案

    题意:       给你一些作业,每个作业有自己的结束时间和花费时间,如果超过结束时间完成,一天扣一分,问你把n个作业完成最少的扣分,要求输出方案. 思路:       状态压缩dp,记录方案数的地方 ...

  5. FZU-2218 Simple String Problem(状态压缩DP)

    原题地址: 题意: 给你一个串和两个整数n和k,n表示串的长度,k表示串只有前k个小写字母,问你两个不含相同元素的连续子串的长度的最大乘积. 思路: 状态压缩DP最多16位,第i位的状态表示第i位字母 ...

  6. 《算法竞赛进阶指南》打卡-基本算法-AcWing 91. 最短Hamilton路径:位运算、状态压缩dp、dp

    文章目录 题目解答 题目链接 题目解答 分析: 状态压缩dp是用二进制数来表示状态. 数据范围n = 20, 那么状态总量就是2202^{20}220个状态. 可以按照以下思路去思考: 哪些点被用过 ...

  7. 状态压缩DP AcWing算法提高课 (详解)

    基础课的状态压缩点这里 基础课中 蒙德里安的梦想 属于 棋盘式状态压缩dp,最短Hamilton路径 属于 集合状态压缩dp 1064. 小国王(棋盘式/基于连通性) 这种棋盘放置类问题,在没有事先知 ...

  8. hdu 5067(状态压缩dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067 解题思路:这道题开始想复杂了,想用bfs去求出最短距离,其实没必要,因为题目中没有阻碍关系,所以 ...

  9. hdu 5418(状态压缩dp+Floyd)

    点击打开链接 解题思路:这道题目和TSP问题很相似,唯一不同的是同一个点可以重复走几次.... 这道题目只有16个顶点,所以很容易想到状态压缩dp,dp[i][j]表示到达顶点i时的状态为j的最小花费 ...

最新文章

  1. python 内置函数map的使用
  2. 为什么导师不喜欢推荐老实人?这是我听过最醍醐灌顶的回答
  3. Mybatis:resultMap的万字使用总结
  4. oracle数据库操作
  5. java关于throw Exception的一个小秘密
  6. Windows 7 自动更新失败导致无法进系统解决方案
  7. android手机电话铃声设置,安卓手机铃声怎么设置
  8. 三星Galaxy Note10配件图曝光:红蓝配色成焦点
  9. 烂泥:学习ssh之ssh隧道应用
  10. 教育网系统服务器域名地址,中国教育网DNS IP地址大全(32个省)
  11. 10负3次方计算机语言,10的负3次方等于多少?
  12. 什么是数据抽取 --全量抽取、增量抽取
  13. 路由器配置 IP 地址
  14. darts.h注释 - 滴水穿石 - 歪酷博客 Ycool Blog
  15. UnicodeDecodeError: 'shift_jis' codec can't decode byte 0x93 in position 4: illegal multibyte sequen
  16. 电脑打开“我的电脑”、“资源管理器”很慢的解决办法。
  17. 移动端H5页面关于软键盘的一些踩坑记录
  18. 如何用计算机计算log除法,电脑系统自带科学计算器使用方法
  19. 医学图像彩色化相关--20201208论文笔记Colorization of CT images to improve tissue contrast for tumor segmentation
  20. cublas_学习笔记2

热门文章

  1. ARM和NEON指令 very gooooooood.............
  2. python3 console input_Python3 tkinter基础 Button command 单击按钮 在console中打印文本
  3. influxdb数据过期_Influxdb Cluster下的数据写入
  4. flatmap用法_短说:map和flatmap
  5. pythonencoding etf-8_etf iopv python 代码30个Python常用小技巧
  6. not null primary key什么意思_explain都不会用,你还好意思说精通Mysql查询优化?
  7. cad线性标注命令_CAD线性标注如何使用的
  8. mysql安装目录问题_Windows下MySQL的安装目录问题
  9. mysql 连续签到天数_新版签到活动明天上线,福利活动抢鲜看~
  10. linux下centos安装mysql数据库_Linux CentOS 下的MySQL数据库安装与配置-阿里云开发者社区...