經典開關問題:
大概意思如下:乙個監獄看守員喝醉了酒,於是把監獄每扇門都開啟(假設有n扇門);然後再從1號門開始,隔一扇關乙個門(把2的倍數的門關掉);接著再從1號門開始,隔2扇操作乙個門(操作3的倍數的門,原來是開的關掉,關著的則開啟)。這樣一直操作到n的倍數,問最後有多少扇門是開啟的。
這個也可以叫關燈問題:有n個燈,分別由n個開關控制,撥一下開關則可以改變燈的狀態(開->關 關->開)。初始狀態燈都是關著的,先把每個開關都撥一下,然後撥一下2的倍數的開關,接著3的倍數,直到n的倍數,問最後有多少燈是開著的。
模擬:
1 #include2 #include3 #include4using
namespace
std;
5int
main()622
}23int k=0;24
for(i=1;i<=n;i++)
2528 cout30return0;
31 }
POJ3279 經典開關問題)
解題思路 如果列舉每乙個格仔的開關,複雜度為o 2 mn 這會超時。但觀察規律可知,只要第一行的開關狀態確定,後面的狀態也都確定了。由此列舉第一行的開關狀態即可。這樣複雜度變為o mn2 n include include include define inf 0x3f3f3f3f using na...
POJ 開關問題
挑戰p153 題意 有乙個m n的格仔,每個格仔有兩種顏色,每個格仔可以翻轉,每翻轉乙個格仔它以及其上下左右四個格仔都會變為它相反的狀態,問最少反轉哪些格仔可以把這些格仔都變成相同的狀態,解有多個時,輸出字典序最小的乙個 經典的開關問題,只要第一行的狀態確定其他行的狀態也將確定,故暴力列舉第一行的開...
poj 3276 反轉開關問題 一 DP 模擬
sample input 7bb fbfb b sample output 3 3 窮舉肯定是要超時的 2 n個狀態.但是先思考一些規律吧 1 轉動奇數次,必然與初始方向相反 2 轉動偶數次,必然與初始方向相同 列舉k 1 n,得到o n 3 的 這個 會超時,只是模擬而已 tle o n 3 in...