CodeForces - 1368F Lamps on a Circle(交互+贪心)
題目鏈接:點(diǎn)擊查看
題目大意:給出一個(gè)環(huán)狀的燈泡,標(biāo)號(hào)為 1 ~ n ,初始時(shí)全部為熄滅狀態(tài),現(xiàn)在兩個(gè)人開(kāi)始玩游戲,第一個(gè)人可以選擇繼續(xù)游戲,也可以選擇結(jié)束游戲,繼續(xù)游戲的話首先選擇一個(gè)正整數(shù) k ,然后點(diǎn)亮?k 個(gè)熄滅的燈泡,第二個(gè)人可以選擇連續(xù)的 k 個(gè)燈泡將其全部熄滅,如此往復(fù),設(shè) R( n ) 是 n 個(gè)燈泡的情況下,經(jīng)過(guò)兩人的數(shù)輪操作后可以亮著的最大燈泡數(shù),第一個(gè)人可以在第二個(gè)人操作完后,亮著的燈泡不小于 R( n ) 時(shí)結(jié)束游戲
題目分析:一道需要制定貪心策略的題目,首先需要求出 R( n ) 為多少,首先假設(shè)當(dāng)前亮著的燈泡數(shù)為 x ,第一個(gè)人選擇的數(shù)字為 k ,這樣下一輪第一個(gè)人經(jīng)過(guò)操作后,亮著的燈泡數(shù)變?yōu)榱?x + k ,因?yàn)榈诙€(gè)人可以選擇 k 個(gè)連續(xù)的燈泡熄滅,如果本輪操作可以提供貢獻(xiàn)的話,必須保證這 x + k 中最長(zhǎng)的連續(xù)的亮著的燈泡是小于等于 k - 1 個(gè)的,這樣第二個(gè)人熄滅連續(xù)的 k 個(gè)燈泡后,本輪的貢獻(xiàn)仍然是 x + 1 ,我們需要求出這個(gè) x?
因?yàn)橐还?x + k 個(gè)亮著的燈泡,極限情況就是每 k - 1 個(gè)亮著的燈泡分成一組,又因?yàn)樽铋L(zhǎng)的連續(xù)的燈泡個(gè)數(shù)必須小于等于 k - 1 ,所以每?jī)啥沃g需要有一個(gè)熄滅的燈泡隔開(kāi),畫個(gè)圖就是這樣的:
淺藍(lán)色表示的是環(huán)狀的燈泡分布,深藍(lán)色的是連續(xù)的 k - 1 個(gè)亮著的燈泡,紅色的是熄滅的燈泡
這樣顯然熄滅的燈泡個(gè)數(shù)為?,亮著的燈泡個(gè)數(shù)為 x + k ,總燈泡個(gè)數(shù)為 n ,所以列出不等式:
解得?,因?yàn)槲覀冞@個(gè) x 的含義是,最后一次放之前亮著的燈的個(gè)數(shù),所以在最后一次操作時(shí),又放置了 k 個(gè)燈泡,對(duì)手拿走了 k - 1 個(gè)燈泡,此時(shí)達(dá)到 R( n ) 的局面,換句話說(shuō),其實(shí)??才對(duì)
這樣我們可以枚舉 k 維護(hù)出最大的 R( n ) ,找到 k 后貪心就好了,就像上面那個(gè)圖一樣,為了方便處理,我們?cè)O(shè)起點(diǎn)從 0 開(kāi)始,不能放置的位置都為 i % k == 0 ,其余位置貪心填滿就好了
代碼:
?
?
總結(jié)
以上是生活随笔為你收集整理的CodeForces - 1368F Lamps on a Circle(交互+贪心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CodeForces - 1368E S
- 下一篇: HDU - 4866 Shooting(