洛谷p2622 關燈問題

2021-09-23 06:13:07 字數 661 閱讀 9910

乙個比較典型的狀態壓縮演算法,不過現在還有點沒看懂。等留著以後再看.

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

int read()

while(ss>='0'&&ss<='9')

return f*x;

}void print(int x)

if(x>9)print(x/10);

putchar(x%10+'0');

}int n,m;

int a[110][1010];

struct node;//s儲存狀態,step儲存當前步數

bool vis[1000010];

int spfa()

); vis[(1

//若狀態為0,則返回當前步數

//這裡為啥是m個狀態,還是有點沒有看懂,現在先放一放

for(int i=1;i<=m;i++)

//位運算解釋如上文字

if(!vis[ss])//若該狀態未訪問,就加入佇列

);vis[ss]=true;}}

}return -1;

}int main()

洛谷 P2622 關燈問題

輸入輸出樣例 說明切入正題 解 廣搜 手動分割 現有n盞燈,以及m個按鈕。每個按鈕可以同時控制這n盞燈 按下了第i個按鈕,對於所有的燈都有乙個效果。按下i按鈕對於第j盞燈,是下面3中效果之一 如果a i j 為1,那麼當這盞燈開了的時候,把它關上,否則不管 如果為 1的話,如果這盞燈是關的,那麼把它...

洛谷 P2622 關燈問題II

洛谷p2622 tag 狀態壓縮 題目大意 n個燈,m個按鈕,每個按鈕都可以控制所有燈,給出每個按鈕對每個燈的影響,求從全開到全關的最短步數。題目分析 每盞燈只有兩個狀態,即開與關,記為0和1,則所有燈的狀態總數為2 n n 3時,有000,001,010,100 對每個狀態單獨分析,可以把每個開關...

洛谷 P2622 關燈問題II

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