日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CodeForces - 1368F Lamps on a Circle(交互+贪心)

發(fā)布時(shí)間:2024/4/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeForces - 1368F Lamps on a Circle(交互+贪心) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接:點(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 ,其余位置貪心填滿就好了

代碼:
?

#include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<cassert> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=2e5+100;set<int>s;int main() { #ifndef ONLINE_JUDGE // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); #endif // ios::sync_with_stdio(false);int n;scanf("%d",&n);int mmax=0,k=1;for(int i=1;i<=n;i++){int temp=n-(n+i-1)/i-i+1;if(temp>mmax){mmax=temp;k=i;}}for(int i=0;i<n;i++)if(i%k)s.insert(i);while(s.size()>=k){printf("%d ",k);for(int i=0;i<k;i++){printf(" %d",*s.begin()+1);s.erase(s.begin());}puts("");fflush(stdout);int pos;scanf("%d",&pos);pos--;for(int i=0;i<k;i++)if((pos+i)%n%k)s.insert((pos+i)%n);}puts("0");fflush(stdout);return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的CodeForces - 1368F Lamps on a Circle(交互+贪心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。