[状态压缩DP] COJ 1129 送货到家
第一道状态压缩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 送货到家相关推荐
- 0x56. 动态规划 - 状态压缩DP(习题详解 × 7)
目录 Problem A. 最短Hamilton路径 ProblemB. 蒙德里安的梦想 Problem C. Corn Fields Problem D. 小国王 Problem E. 炮兵阵地 P ...
- POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...
- BZOJ1688|二进制枚举子集| 状态压缩DP
Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...
- hdu1074 状态压缩dp+记录方案
题意: 给你一些作业,每个作业有自己的结束时间和花费时间,如果超过结束时间完成,一天扣一分,问你把n个作业完成最少的扣分,要求输出方案. 思路: 状态压缩dp,记录方案数的地方 ...
- FZU-2218 Simple String Problem(状态压缩DP)
原题地址: 题意: 给你一个串和两个整数n和k,n表示串的长度,k表示串只有前k个小写字母,问你两个不含相同元素的连续子串的长度的最大乘积. 思路: 状态压缩DP最多16位,第i位的状态表示第i位字母 ...
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 91. 最短Hamilton路径:位运算、状态压缩dp、dp
文章目录 题目解答 题目链接 题目解答 分析: 状态压缩dp是用二进制数来表示状态. 数据范围n = 20, 那么状态总量就是2202^{20}220个状态. 可以按照以下思路去思考: 哪些点被用过 ...
- 状态压缩DP AcWing算法提高课 (详解)
基础课的状态压缩点这里 基础课中 蒙德里安的梦想 属于 棋盘式状态压缩dp,最短Hamilton路径 属于 集合状态压缩dp 1064. 小国王(棋盘式/基于连通性) 这种棋盘放置类问题,在没有事先知 ...
- hdu 5067(状态压缩dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067 解题思路:这道题开始想复杂了,想用bfs去求出最短距离,其实没必要,因为题目中没有阻碍关系,所以 ...
- hdu 5418(状态压缩dp+Floyd)
点击打开链接 解题思路:这道题目和TSP问题很相似,唯一不同的是同一个点可以重复走几次.... 这道题目只有16个顶点,所以很容易想到状态压缩dp,dp[i][j]表示到达顶点i时的状态为j的最小花费 ...
最新文章
- python 内置函数map的使用
- 为什么导师不喜欢推荐老实人?这是我听过最醍醐灌顶的回答
- Mybatis:resultMap的万字使用总结
- oracle数据库操作
- java关于throw Exception的一个小秘密
- Windows 7 自动更新失败导致无法进系统解决方案
- android手机电话铃声设置,安卓手机铃声怎么设置
- 三星Galaxy Note10配件图曝光:红蓝配色成焦点
- 烂泥:学习ssh之ssh隧道应用
- 教育网系统服务器域名地址,中国教育网DNS IP地址大全(32个省)
- 10负3次方计算机语言,10的负3次方等于多少?
- 什么是数据抽取 --全量抽取、增量抽取
- 路由器配置 IP 地址
- darts.h注释 - 滴水穿石 - 歪酷博客 Ycool Blog
- UnicodeDecodeError: 'shift_jis' codec can't decode byte 0x93 in position 4: illegal multibyte sequen
- 电脑打开“我的电脑”、“资源管理器”很慢的解决办法。
- 移动端H5页面关于软键盘的一些踩坑记录
- 如何用计算机计算log除法,电脑系统自带科学计算器使用方法
- 医学图像彩色化相关--20201208论文笔记Colorization of CT images to improve tissue contrast for tumor segmentation
- cublas_学习笔记2
热门文章
- ARM和NEON指令 very gooooooood.............
- python3 console input_Python3 tkinter基础 Button command 单击按钮 在console中打印文本
- influxdb数据过期_Influxdb Cluster下的数据写入
- flatmap用法_短说:map和flatmap
- pythonencoding etf-8_etf iopv python 代码30个Python常用小技巧
- not null primary key什么意思_explain都不会用,你还好意思说精通Mysql查询优化?
- cad线性标注命令_CAD线性标注如何使用的
- mysql安装目录问题_Windows下MySQL的安装目录问题
- mysql 连续签到天数_新版签到活动明天上线,福利活动抢鲜看~
- linux下centos安装mysql数据库_Linux CentOS 下的MySQL数据库安装与配置-阿里云开发者社区...