题目链接 #解题思路 状压dp入门题,也是经典的tsp问题。因为tsp问题是np完全问题,所以我们只能考虑通过大量枚举来做。需要注意的一点是,如果走过了1->2->3这样一条路径,要到达第4个点的话,并不一定需要从3出发,只要从前面走过的点出发即可,所以我们并不需要把所以的点按前后顺序走出来的情况全 ...
HDU5691 Sitting in Line 题意: 给出$n$个数字,有些数字的位置固定了,现在要求把所有没固定的数字放在一个位置,使得任意相邻两个位置的数字的相乘的和最大 题解: $n$只有$16$,考虑状压$DP$ $DP[msk][i]$表示当前已经选了$msk$集合里的数字且最后一个数字 ...
分类:
其他好文 时间:
2020-06-09 14:59:52
阅读次数:
58
很经典的题,但是好久没做这类有点忘了。。 经典状压dp做法:用S表示一行的状态,某位为1表示该位被占用,反之表示该位未被占用 dp[i][S]表示第i行状态为S时的最大覆盖数,那么枚举第i-1行的状态S',如果S,S'都合法,那么此时可以求出S状态下最多可以放多少块砖 预处理出cnt[S1][S2] ...
分类:
其他好文 时间:
2020-06-03 20:09:06
阅读次数:
61
这个状压还要输出方案实在是太ex了 第 i 行放完了水后,能新种下的甘蔗数量取决于 i ? 1 行和 i ? 2 行 的状态 令 dp【i,j】 表示放完前 i 行且最后两行状态为 j 时最多能种下的数量 我们在第 i 行放水有可能能使 i ? 1 行的某个格子能够放上甘蔗了, 但如果不知道 i ? ...
分类:
其他好文 时间:
2020-06-02 19:12:37
阅读次数:
78
状压dp 题意 有一块 m 行 n 列的农场地形,要在 ‘1’ 上养牛,并且相邻上下左右不能同时养牛。 问:有多少种方案来养牛? 思路 先看第一行样例 1 1 1,肯定不能相邻养牛,所以有以下几种情况 0 0 0 0 0 0 1 1 0 1 0 2 1 0 0 4 1 0 1 5 当加上第二行的时候 ...
分类:
其他好文 时间:
2020-05-23 11:43:14
阅读次数:
56
https://vjudge.net/contest/372814#problem/E n=15考虑状压dp #include <bits/stdc++.h> #define inf 2333333333333333 #define N 1000010 #define p(a) putchar(a) ...
分类:
Web程序 时间:
2020-05-12 20:24:13
阅读次数:
82
分析 题干很简单,每行每列只能选一个,所以想到了状压DP???然后发现压不下来。。。 于是又想到之前的一道将行和列连边的二分图的题,发现这个也可以。 然后就只剩下了怎么求最小值,因为$n$的范围较小,所以可以尝试去把所有可能的答案枚举一下,直接枚举显然不可,所以要用到二分答案。 所以就是先求出最大的 ...
分类:
其他好文 时间:
2020-05-11 23:35:26
阅读次数:
62
LINK: "分层图" 很精辟的一道题 写的时候没带脑子 导致搞了半天不知道哪错了。 可以想到状压每次到某一层的状态 然后这个表示方案数 多开一维表示此时路径条数的奇偶即可。 不过显然我们只需要知道路径条数的奇偶性即可。 所以对于当前状态 如果某个点路径条数为偶数 那么怎么转移都不必要 所以我们可以 ...
分类:
其他好文 时间:
2020-05-04 21:39:25
阅读次数:
76
这题主要问题是有些地方有钥匙,这种类型我们之前在bfs种做到过,就是用状压dp多枚举一维钥匙就行了,因为钥匙不需要时间,所以每次走到取完钥匙肯定是最优的 本题是二维的,不过转成一维更方便。我们的dis数组原先记录的是点,现在记录的是点和状态。建图是,先建门,将门与墙都插入一个set便于查询 建完这两 ...
atcoder Keyence Programming Contest 2020 D Swap and Flip 2020腾讯暑假实习笔试(状压dp or 状压乱搞) 题意 一张牌有正反两面,都有数字,有操作交换相邻两张卡牌,交换的时候两张牌都会翻转,问最少操作次数使得卡牌满足数字非降(n usin ...
分类:
其他好文 时间:
2020-05-01 00:52:22
阅读次数:
74