可以发现,遍历过程的时间复杂度并没有降低,降低的是我们存储状态的空间复杂度。 下面落谷的 P2622 关灯问题II(https://www.luogu.com.cn/problem/P2622)就利用到了我们刚刚提到的状态压缩。 题目要求: 现有n盏灯,以及m个按钮。每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果。按...
关灯问题II (状态压缩 BFS)题目描述现有n盏灯,以及m个按钮。每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果。按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时候,把它关上,否则不管;如果为-1的话,如果这盏灯是关的,那么把它打开,否则也不管;...
#1502. 关灯问题II统计 描述 提交 自定义测试 题目描述 现有n盏灯,以及m个按钮。每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果。按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时候,把它关上,否则不管;如果为-1的话,如果这盏灯是关的,...
首先看到$n<=10$,就可以考虑状压了,要求最小值,所以初始化大一点,我们设$f[i]$表示当前状态为$i$的最少按按钮数 所以$f[(1<<n)-1]$初始化为$0$,因为初始状态不需要按按钮。 开始转移状态,我们第一层循环从全开的状态到全关的状态,第二层枚举这次用哪个开关,第三层枚举这次开关的影响。最终状态$f[0...
洛谷P2622——关灯问题II【状压DP】 题目描述 现有n盏灯,以及m个按钮。每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果。按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时候,把它关上,否则不管;如果为-1的话,如果这盏灯是关的,那么把它打开,...
https://www.luogu.com.cn/problem/P2622#include<bits/stdc++.h>using namespace std;const int N=(1<<10)+1;int n,m,a[102][12],i,j,x,k,t,dp[N];queue<int> q;bool vis[N];int main(){ scanf("%d%d",&n,&m), memset(dp,0x3f,sizeof(
题面- 现有N盏灯,M个按钮。每个按钮可以同时控制这n盏灯——按下某个按钮,对于所有的灯都有一个效果。给出所有开关对所有灯的控制效果,问最少要按几下按钮...
luogu2622关灯问题 II 题目大意: 有一些灯,有些开关可以控制这些灯,给出矩阵表示控制 对于矩阵中的a i j 表示第i个开关控制第j个灯的情况 若元素为1 表示当灯开着的时候,关掉灯 若元素为0 表示无操作 若元素为-1 表示当灯关着的时候,打开灯 思路: 因为灯的数量很小 我们可以将所有灯的状态用二进制来...
P2622 关灯问题II n<=20时候要想状压DP!! n<=20时候要想状压DP!! n<=20时候要想状压DP!!(重要的事情说三遍(因为我在状压DP上栽了3次。。。)) 题意:现有n盏灯,以及m个按钮。每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果。
洛谷-P2622 关灯问题II(状态压缩+DFS) 链接:https://www.luogu.com.cn/problem/P2622 原文:题目描述 现有n盏灯,以及m个按钮。每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果。按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时候,把它关上,...