開關問題 Contest Hunter 0201

2021-08-29 16:20:37 字數 552 閱讀 9214

題目給了t個5*5的01矩陣,你可以將該矩陣中任意位置的數0變1,1變0,在你改變該位置的數時,它的上下左右四個位置的數也會同時發生改變。問你能否6步及以內將該矩陣變為全1矩陣,如果能輸出最少步數,否則輸出-1。

這道題一看好像毫無思路,但是你仔細想一想,會發現每個點最多被修改一次,不然就不優了。

並且,我們在固定第一行後,第二行的狀態就可以確定了,如果當前位置的上方為0,那麼該位置必須被改變一次,不然上方那個不為1的點就無法被改變了。所以我們可以暴力列舉第一行的狀態,然後根據第一行的狀態推出下面行的狀態,並記錄下步數,最後判斷最後一行狀態是否合法,記錄最小步數即可。

#include#include#include#includeusing namespace std;

int a[35][35],p[35][35],ans,min0,t;

bool flag;

char st[35];

int main()

for (int i=0;i<(1<<5);i++)

return 0;

}

開關燈問題

描述 一條長廊裡依次裝有n 1 n 65535 盞電燈,從頭到尾編號1 2 3 n 1 n。每盞電燈由乙個拉線開關控制。開始,電燈全部關著。有n個學生從長廊穿過。第乙個學生把號碼凡是1的倍數的電燈的開關拉一下 接著第二個學生把號碼凡是2的倍數的電燈的開關拉一下 接著第三個學生把號碼凡是3的倍數的電燈...

開關燈問題

題目描述 有若干隻燈排成一排。所有的燈開始的時候都是關閉的,現對這些燈進行一系列的操作。在第 i次操作的時候,調整所有編號是 i的倍數的燈的狀態 原本開啟的燈將它關閉,原本關閉的將它開啟 輸入 每組測試資料佔一行,包含乙個整數 n 0 n 10 5 輸出 經過無限次操作之後,第 n隻燈的狀態 0表示...

反轉(開關問題)

poj3276 n頭牛排成一列,牛頭向前或向後。擁有一台自動轉向機器,設定數值k,每次使用可以令k頭連續的牛轉向。求為了讓所有的牛都面向前方需要的最少操作次數m和對應最小的k。首先交換區間順序對結果是沒有影響的,此外對同乙個區間進行兩次以上反轉是多餘的。因此,問題轉化成了求需要被反轉的區間的集合。於...