![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
状压
VL——MOESR
ga
展开
-
【CLYZ集训】随机游走【状压】【记忆化搜索】
题解原创 2023-02-06 15:59:47 · 150 阅读 · 0 评论 -
【集训DAY2】Sculpture【状压DP】
状压DP原创 2022-07-12 21:01:57 · 72 阅读 · 0 评论 -
【YBTOJ】涂抹果酱
思路:就是把二进制转换成三进制然后状压DPcodecodecode#include<iostream>#include<cstdio>using namespace std;int n, m, tot, ks;int tmp[10], idx[100100], st[1100][10];int k, b[10], f[10010][300], a[300][300];void get_(){ int power=1; for(int i=1; i&..原创 2021-12-11 09:16:34 · 349 阅读 · 0 评论 -
【Luogu_P7296】【USACO21JAN】 Uddered but not Herd G
思路:状压DP,把字符缩成01串,如果需要重唱就贡献加1codecodecode#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;char s[100100];int a[101010], b[101010], c[200][200];int n, f[1<<21];int main()..原创 2021-08-18 15:08:43 · 149 阅读 · 0 评论 -
【Luogu_P1879】Corn Fields G
链接思路:首先我们看数据,不到30,可以用状压我们先把田地不相邻的土地筛选出,在把土地的状态记录下来,之后就套状压DP模板就过了代码:#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<queue>#include<stack>#include<map>#include<cstring>原创 2020-08-20 21:14:30 · 111 阅读 · 0 评论 -
【Luogu_P2622】关灯问题II
题目描述现有n盏灯,以及m个按钮。每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果。按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时候,把它关上,否则不管;如果为-1的话,如果这盏灯是关的,那么把它打开,否则也不管;如果是0,无论这灯是否开,都不管。现在这些灯都是开的,给出所有开关对所有灯的控制效果,求问最少要按几下按钮才能全部关掉。输入格式前两行两个数,n m接下来m行,每行n个数,a[i][j]表示第i个开关对第j个灯的效果。原创 2020-08-20 09:26:10 · 190 阅读 · 0 评论 -
【Luogu_P1433】吃奶酪
题目描述房间里放着 n 块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 (0,0) 点处。输入格式第一行有一个整数,表示奶酪的数量 n。第 2 到第 (n+1) 行,每行两个实数,第 (i+1) 行的实数分别表示第 i 块奶酪的横纵坐标 x_i, y_i 。输出格式输出一行一个实数,表示要跑的最少距离,保留 22 位小数。输入输出样例输入41 11 -1-1 1-1 -1输出7.41思路:这是一道金典的状压DP题我们设f[i][k]f[i][k原创 2020-08-20 07:45:04 · 91 阅读 · 0 评论 -
【NOI2001】【SSL1384】 【TOI 1023】【POJ 1185】炮兵阵地
Description司令部的将军们打算在NM的网格地图上部署他们的炮兵部队。一个NM的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响。转载 2020-08-19 21:43:51 · 121 阅读 · 0 评论 -
【SSL1383】车II
Description有一个nm的棋盘(n、m≤80,nm≤80)要在棋盘上放k(k≤20)个棋子,使得任意两个棋子不相邻。求合法的方案总数。Inputn,m,kOutput方案总数Sample Input3 3 2Sample Output24思路:状压DP我们先枚举出所有的状态,用dfsdfsdfs来枚举,即:void VL_dfs(int ans, int pos, int flag){ if(pos>n) { s[++num]=ans; c[nu原创 2020-08-19 15:12:47 · 910 阅读 · 0 评论 -
【SSL1382】车
Description在n*n(n≤20)的方格棋盘上放置n个车(可以攻击所在行、列),有些格子不能放,求使它们不能互相攻击的方案总数。Input第一行为棋盘的大小n第二行为障碍的数量m第三行到第m+3为m个障碍Output总数Sample Input421 12 2Sample Output14思路:我们可以设f[i][j]f[i][j]f[i][j]为当前第i,ji,ji,j这个位置放的答案,虽然这样可行,但我们想到可以优化,那就是状压DP状压DP就是把维数降一原创 2020-08-19 09:37:18 · 777 阅读 · 0 评论