![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
状压dp
虐猫Da人薛定谔
这个作者很懒,什么都没留下…
展开
-
HDU - 1565 方格取数 (状压dp)
题目链接 题目大意: 一个n*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,并且取出的数的和最大。 解题思路: 因为两个数之间不能相邻,即每行用状态表示出来,1表示取,0表示不取,所以状态方程为dp[i][j]=max(dp[i][j],dp[i-1][k]+val);(第一维表示行数,第二维表示行的状态)当(sta[j]&sta[k])==0时,我们可以先用打表的方式求得状态表示。 代码: #include<bits/stdc++.h原创 2020-08-12 13:48:27 · 104 阅读 · 0 评论 -
hdu5418--Victor and World(最短路径+状压dp)
题目链接 题目大意: 维克多现在在一个数字是1的国家,他想知道他访问每个国家至少一次并最终返回第一个国家的最低燃料量。 解题思路: 我是初学状压dp看视频的时候知道了这题,在视频中其实已经差不多把这题差不多讲明白了,首先用二进制数表示城市的状态,如果上一个城市是已经走过的状态,这个城市才能由上一个状态转移过来,唯一要注意的就是最短路了,挺久没写最短路,都有点忘了。 代码: #include<bits/stdc++.h> #define pb emplace_back // #define原创 2020-08-11 08:37:34 · 195 阅读 · 0 评论