随笔分类 -  状压dp

摘要:题目 最少用多少条直线可以覆盖N个点?(N<=16) 题解 一道水题浪费我好久时间,总是有地方写错。。。 N^3枚举两点之间的连线覆盖了多少点,然后状压dp加记忆化搜索。 注意枚举到一个未被覆盖的点就可以跳出了,顺序对答案没有影响,因为之后也一定会覆盖他。 代码 #include<bits/stdc 阅读全文
posted @ 2020-12-13 11:13 EDawn 阅读(111) 评论(0) 推荐(0)
摘要:题目 给你一幅8*8的棋盘,上面有8个皇后,问最少的移动步数可使8个皇后无法攻击到对方,移动过程中不可以跨越别的皇后。 题解 可以先把所有符合条件的8皇后位置预处理出来(92种),然后用状态压缩去一一匹配。不可跨越这条件其实没有实际意义,因为跨越别的皇后得到的答案一定不会比不跨越更优,不会对实际答案 阅读全文
posted @ 2020-12-13 10:29 EDawn 阅读(99) 评论(0) 推荐(0)
摘要:题目 求无向图的简单环个数,点数不大于19 题解 根据数据范围很容易得知是状压dp,普遍想法是记录点数状态和最后一个点再进行延伸,但这样非常容易重复。 我们可以考虑将一个状态里最低的一位设为起点,每次只向高位进行延伸。最后判一下起点与终点是否相连,更新答案。(简称拆环成链) 注意这样还是有重复的,一 阅读全文
posted @ 2020-12-12 21:14 EDawn 阅读(108) 评论(0) 推荐(0)
摘要:题目 给一个长度小于等于16的字符串,每次可以删去一个回文子序列(可以是单个字母),问删光这个字符串最少需要几步 题解 这不就根暴力没啥区别吗。。。 代码 #include<cstdio> #include<iostream> #include<cmath> #include<queue> #inc 阅读全文
posted @ 2020-12-12 20:32 EDawn 阅读(135) 评论(0) 推荐(0)
摘要:题目 度度熊是他同时代中最伟大的数学家,一切数字都要听命于他。现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了。游戏的规则十分简单,参与游戏的N个整数将会做成一排,他们将通过不断交换自己的位置,最终达到所有相邻两数乘积的和最大的目的,参与游戏的数字有整数也有负数。度度熊为了在他的数字仆人面前展 阅读全文
posted @ 2020-12-12 20:14 EDawn 阅读(72) 评论(0) 推荐(0)