[POJ 1222] EXTENDED LIGHTS OUT
題目
http://acm.pku.edu.cn/JudgeOnline/problem?id=1222
描述
給你一個5行6列的矩陣分別表示30個燈,矩陣map[i][j]為1表示燈亮著, 0表示燈沒亮. 要求你輸出解決方案. press[i][j]為1表示按一下,0表示不按。使得最后狀態為所有燈都熄滅。
分析
高斯消元法(Gaussian elimination method)
=>
對于每個格子 map[i][j], 能影響他的格子為 (i-1, j), (i, j-1), (i+1, j), (i, j+1), 以及自身(i, j).
=> (press[i-1][j] + press[i][j-1] + press[i+1][j] + press[i][j+1] + press[i][j] + map[i][j]) & 1 = 0 // press[x][y] 表示 0: 不按; 1: 按下.
=> (press[i-1][j] + press[i][j-1] + press[i+1][j] + press[i][j+1] + press[i][j]) & 1 = map[i][j]
那么就可以為每個格子列出一個方程, 得到共 30 個方程的方程組, 進而用高斯消元法來解方程組.
// 先給格子編好號 1 -> 30
// 然后就可以壓縮為一維
=>
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
將涉及不到的格子的系數設為 0.
然后就是普通的高斯消元了.
還有沒有比高斯消元更優化的方法?
可不可以從未知量系數非0即1來考慮?
總結
以上是生活随笔為你收集整理的[POJ 1222] EXTENDED LIGHTS OUT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [POJ 3155] Hard Life
- 下一篇: [vijos P1919] 最有活力的鲜