P2622 關燈問題II 狀態壓縮入門

2022-03-05 18:45:19 字數 786 閱讀 1893

具體思路:暴力,嘗試每個開關,然後看所有的情況中存不存在燈全部關閉的情況,在儲存所有燈的情況的時候,觀察到n的值不大,所以可以考慮用二進位制進行儲存,如果說這個數用二進位制表示的時候,如果第i位是1,代表第(i+1)個燈當前的狀態是開著的,否則就是關閉的.

ac**:

#include#include#include#include#include#include#includeusing namespace std;

# define inf 0x3f3f3f3f

# define ll long long

# define pi acos(-1.0)

const int mod = 1e9 ;

const int maxn = 200+100;

struct node

node(int xx,int yy)

};int a[maxn][maxn];

int vis[6000],n,m;

int bfs(int tot)

if(a[i][j]==-1)

}if(vis[tmp])continue;

vis[tmp]=1;

q.push(node(tmp,top.step+1));

if(tmp==0)}}

return -1;

}int main()

}int tmp=(1

printf("%d\n",ans);

return 0;

}

洛谷P2622 關燈問題II(狀態壓縮)

現有n盞燈,以及m個按鈕。每個按鈕可以同時控制這n盞燈 按下了第i個按鈕,對於所有的燈都有乙個效果。按下i按鈕對於第j盞燈,是下面3中效果之一 如果a i j 為1,那麼當這盞燈開了的時候,把它關上,否則不管 如果為 1的話,如果這盞燈是關的,那麼把它開啟,否則也不管 如果是0,無論這燈是否開,都不...

題解 P2622 關燈問題II

題目 感覺大佬們的 在讀入上的處理比本蒟蒻優秀多了,於是,乙個afo蒟蒻弱弱地提出一下自己的看法 首先,對於 n 那麼小,肯定是狀壓啦 對於讀入,本蒟蒻開了兩個陣列來儲存每個按鈕的效果 open i 和 close i 分別表示在按下第 i 個按鈕後,它對於開著的開關和關閉的開關所造成的影響 那麼我...

P 2622 關燈問題

現有n盞燈,以及m個按鈕。每個按鈕可以同時控制這n盞燈 按下了第i個按鈕,對於所有的燈都有乙個效果。按下i按鈕對於第j盞燈,是下面3中效果之一 如果a i j 為1,那麼當這盞燈開了的時候,把它關上,否則不管 如果為 1的話,如果這盞燈是關的,那麼把它開啟,否則也不管 如果是0,無論這燈是否開,都不...