摘要:
又是一道有合法性检测的状压题。 dp[i][j][k]表示第i行状态为j,i-1行状态为k时前i行放置的最大数量。 注意22行统计二进制数中1的个数时的巧妙方法。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using 阅读全文
posted @ 2022-06-25 09:57
YHXo
阅读(32)
评论(0)
推荐(0)
摘要:
dp[i][j]表示第i行第j个状态时,前i行得到的方案数,该状态可由前一行的状态转移过来。 本题重点在于合法性检测:每一行都用一个二进制数表示,1.二进制数不能有相邻的1;2.要和原地图匹配;3.上下两行不能有冲突。 预处理地图时将0换成1,方便进行2号检测,用位运算&可以实现。 1 #inclu 阅读全文
posted @ 2022-06-25 09:28
YHXo
阅读(34)
评论(0)
推荐(0)
摘要:
题目没有起点限制,且每个节点至少访问1次,最多访问2次,所以用三进制数表示节点的状态(选取情况)。 因为三进制数的每一位是0或1或2,所以预处理z状态S的第j位的数是有必要的。 边界条件:dp[tri[i]][i]=0,表示只访问了i节点时,从i出发最小费用是0。 最后的答案就在所有满足条件的状态中 阅读全文
posted @ 2022-06-25 08:55
YHXo
阅读(32)
评论(0)
推荐(0)
摘要:
本题是经典的Tsp问题的变形,Tsp问题就是要求从起点出发经过每个节点一次再回到起点的距离最小值,本题的区别就是可以经过一个节点不止一次,那么先预处理出任意两点之间的最短距离就行了,因为再多走只会浪费更多的距离。 dp[S][u]表示当前已访问的节点集合为S,从u出发走完剩余节点回到起点的最短距离。 阅读全文
posted @ 2022-06-25 08:24
YHXo
阅读(38)
评论(0)
推荐(0)

浙公网安备 33010602011771号