現有n盞燈,以及m個按鈕。每個按鈕可以同時控制這n盞燈——按下了第i個按鈕,對於所有的燈都有乙個效果。按下i按鈕對於第j盞燈,是下面3中效果之一:如果a[i][j]為1,那麼當這盞燈開了的時候,把它關上,否則不管;如果為-1的話,如果這盞燈是關的,那麼把它開啟,否則也不管;如果是0,無論這燈是否開,都不管。
現在這些燈都是開的,給出所有開關對所有燈的控制效果,求問最少要按幾下按鈕才能全部關掉。
輸入格式:
前兩行兩個數,n m
接下來m行,每行n個數,a[i][j]表示第i個開關對第j個燈的效果。
輸出格式:
乙個整數,表示最少按按鈕次數。如果沒有任何辦法使其全部關閉,輸出-1
輸入輸出樣例
輸入樣例#1
3 2
1 0 1
-1 1 0
輸出樣例#1
說明對於20%資料,輸出無解可以得分。
對於20%資料,n<=5
對於20%資料,m<=20
上面的資料點可能會重疊。
對於100%資料 n<=10,m<=100
記錄一下本題,**中有解釋
#include
#include
#include
#include
#include
#include
using
namespace
std;
int n,m;
int a[110][1010];
struct node;
bool vis[1000010];
inline
int read()
inline
int zy() );
vis[(1
<1]=true;//全開為初始狀態
while(!q.empty())
if(!vis[ss]));
vis[ss]=true;}}
}return -1;
}int main()
洛谷 P2622 關燈問題
輸入輸出樣例 說明切入正題 解 廣搜 手動分割 現有n盞燈,以及m個按鈕。每個按鈕可以同時控制這n盞燈 按下了第i個按鈕,對於所有的燈都有乙個效果。按下i按鈕對於第j盞燈,是下面3中效果之一 如果a i j 為1,那麼當這盞燈開了的時候,把它關上,否則不管 如果為 1的話,如果這盞燈是關的,那麼把它...
洛谷p2622 關燈問題
乙個比較典型的狀態壓縮演算法,不過現在還有點沒看懂。等留著以後再看.include include include include include includeusing namespace std int read while ss 0 ss 9 return f x void print in...
題解 P2622 關燈問題II
題目 感覺大佬們的 在讀入上的處理比本蒟蒻優秀多了,於是,乙個afo蒟蒻弱弱地提出一下自己的看法 首先,對於 n 那麼小,肯定是狀壓啦 對於讀入,本蒟蒻開了兩個陣列來儲存每個按鈕的效果 open i 和 close i 分別表示在按下第 i 個按鈕後,它對於開著的開關和關閉的開關所造成的影響 那麼我...