POJ 1176 Party Lamps USACO 2.2 派对灯(搜索)
題目地址 http://poj.org/problem?id=1176
題目描述
在IOI98的節(jié)日宴會(huì)上,我們有N(10<=N<=100)盞彩色燈,他們分別從1到N被標(biāo)上號(hào)碼。 這些燈都連接到四個(gè)按鈕:
按鈕1:當(dāng)按下此按鈕,將改變所有的燈:本來亮著的燈就熄滅,本來是關(guān)著的燈被點(diǎn)亮。
按鈕2:當(dāng)按下此按鈕,將改變所有奇數(shù)號(hào)的燈。
按鈕3:當(dāng)按下此按鈕,將改變所有偶數(shù)號(hào)的燈。
按鈕4:當(dāng)按下此按鈕,將改變所有序號(hào)是3*K+1(K>=0)的燈。例如:1,4,7…
一個(gè)計(jì)數(shù)器C記錄按鈕被按下的次數(shù)。當(dāng)宴會(huì)開始,所有的燈都亮著,此時(shí)計(jì)數(shù)器C為0。
你將得到計(jì)數(shù)器C(0<=C<=10000)上的數(shù)值和經(jīng)過若干操作后某些燈的狀態(tài)。寫一個(gè)程序去找出所有燈最后可能的與所給出信息相符的狀態(tài),并且沒有重復(fù)。
輸入輸出格式
輸入格式:
不會(huì)有燈會(huì)在輸入中出現(xiàn)兩次。
第一行: N。
第二行: C最后顯示的數(shù)值。
第三行: 最后亮著的燈,用一個(gè)空格分開,以-1為結(jié)束。
第四行: 最后關(guān)著的燈,用一個(gè)空格分開,以-1為結(jié)束。
輸出格式:
每一行是所有燈可能的最后狀態(tài)(沒有重復(fù))。每一行有N個(gè)字符,第1個(gè)字符表示1號(hào)燈,最后一個(gè)字符表示N號(hào)燈。0表示關(guān)閉,1表示亮著。這些行必須從小到大排列(看作是二進(jìn)制數(shù))。
如果沒有可能的狀態(tài),則輸出一行’IMPOSSIBLE’。
輸入輸出樣例
輸入樣例#1:
10
1
-1
7 -1
輸出樣例#1:
0000000000
0101010101
0110110110
說明
在這個(gè)樣例中,有三種可能的狀態(tài):
所有燈都關(guān)著
1,4,7,10號(hào)燈關(guān)著,2,3,5,6,8,9亮著。
1,3,5,7,9號(hào)燈關(guān)著,2, 4, 6, 8, 10亮著。
翻譯來自NOCOW
USACO 2.2
講真的這個(gè)翻譯真不咋地,之前用過別的方法做過這個(gè)題目,咱們現(xiàn)放開超時(shí),優(yōu)化策略,先分析這個(gè)題目,題目是給了這四種操作,讓你找到這四種操作能夠達(dá)成符合條件的類型是哪幾種,明顯搜索題,但是這里有兩個(gè)思想一定要明白,也是這道題的關(guān)鍵所在:
1.搜索上限,當(dāng)搜索次數(shù)達(dá)到一定數(shù)量之后,已經(jīng)搜索出所有結(jié)果,沒必要在繼續(xù)進(jìn)行搜索,這個(gè)思想不僅是搜索,有時(shí)候二分也會(huì)用到這個(gè)思想。
2.重復(fù)性,結(jié)果具有規(guī)律,通過這個(gè)規(guī)律可以對(duì)某簡(jiǎn)單結(jié)果進(jìn)行擴(kuò)展的到正確答案。
比如在這個(gè)題目中其實(shí)四位數(shù)足以表示所有情況,但是我為了保險(xiǎn)還使用了6位,但是這并沒有太大的區(qū)別,考慮四位數(shù),當(dāng)對(duì)四位數(shù)變換超過6次時(shí)必然出現(xiàn)重復(fù)結(jié)果,雖然不知道最少變換幾次,但是6次已經(jīng)夠少了。
雖然代碼寫的比較丑,比較長(zhǎng),但是思路明確純搜索寫法。
總結(jié)
以上是生活随笔為你收集整理的POJ 1176 Party Lamps USACO 2.2 派对灯(搜索)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SIA:2022 年全球半导体销售额达
- 下一篇: 环形均分纸牌问题(中位数)