状压dp
zzti_xiaowei
xxx
展开
-
Hdu-1074 Doing Homework
[题目链接]思路:第一道状压dp,以前下决心学过一次,未果,今年再战! 十分感谢博主黑色的夢。用二进制压缩状态(用0表示没做,1表示做了),当n=3时,dp[111]表示三门课都做了,为我们最终求的状态。dp[011]:表示第1、2门课做了,第3门没做(二进制从右至左看)。定义好状态,就要讨论状态转移了,做了三门课的最优解由做了两门课的解得到,做了两门的最优解由做了一门课的解得到,做...原创 2018-09-08 18:01:09 · 141 阅读 · 0 评论 -
铺砖问题(状压dp)
感受: 一直把《挑战程序设计竞赛》奉为神作,写的真是太好了,超级给力。可是去年看了一周的状压dp,只是对旅行商问题有一点感觉,铺砖问题更是一脑袋浆糊,学的太吃力了,无奈放弃了。今年突然心血来潮,又学了一波,无奈还是卡卡卡到铺砖问题,原来书上的解法是没见过的轮廓线动态规划解法,真是被搞得不要不要的,好气!!!博客:在此表示深深的感谢~ 状态压缩动态规划 POJ 2411 (编程之美-瓷砖覆盖地...原创 2018-09-12 01:24:46 · 1823 阅读 · 0 评论 -
旅行商问题(TSP)
问题描述: 给定一个n个顶点组成的带权有向图的距离矩阵d(i,j)。要求从顶点0恰好经过每个顶点一次后再回到顶点0的权重和最小值。题解详见《挑战程序设计竞赛》119页代码:int n;int d[Max_n][Max_n];int dp[1<<Max_n][Max_n]; //dp[s][u]:表示当前状态(已访问顶点集合)为s,在顶点u的最小值 int re...原创 2018-09-12 23:32:34 · 2037 阅读 · 0 评论 -
Poj-2686 Traveling by Stagecoach
[题目链接]思路:经典的状压dp,写的太少了~dp[s][u]表示剩下的车票集合为s并且现在在城市u的状态所需要的最小花费 。现在所在的城市u,剩下的车票集合为s,从这个状态出发,使用一张车票i(i在剩下车票集合s中)移动到城市v,相当于从状态dp[s][u]转移到了状态dp[s\i][v],实现了状态转移!代码:#include<iostream>#inc...原创 2018-09-10 17:38:13 · 136 阅读 · 0 评论 -
点集配对问题
<摘自刘汝佳训练指南P61>题意: 空间里n个点(n为偶数),把它们配成n/2对点,使得每个点恰好在一个点对中,要求所有点对中,两点距离之和最小值,其中n<=20。思路: dp(s):表示集合s配对后的最小距离和。 状态转移方程: dp(s) = min(dp{S - {i} - {j}+ |Pi Pj| | j∈S, j > i, i = min{S}...原创 2018-09-14 11:46:32 · 2274 阅读 · 0 评论