Poj 1012 Joseph 約瑟夫環

2021-06-12 05:07:43 字數 633 閱讀 1703

題意:有k個壞人k個好人坐成一圈,前k個為好人(編號1~k),後k個為壞人(編號k+1~2k)

現在有乙個報數m,從編號為1的人開始報數,報到m的人就要自動死去。

問當m為什麼值時,可以使得在出現好人死亡之前,k個壞人先全部死掉?

思路:約瑟夫環的變形問題,前k個退出的人必定是後k

個人,所以只要前k

輪中只要有一次

f(i)則此

m不符合題意

這裡:有我第一次做這道題時的**,現在我都沒想清楚當時是怎麼想出那麼複雜的判斷條件的。。。

p.s.重新看當時訓練賽的情況,這道題好多人都是直接打表過的啊,這不科學!!!

#include #include #include using namespace std;

int ans[15],data[15];

//int data=;

void init ()

{ for (int k=1;k<14;k++)

{ int m=1;

memset(ans,0,sizeof(ans));

for (int i=1;i<=k;i++)

{ans[i]=(ans[i-1]+m-1)%(2*k-i+1);

if (ans[i]

POJ1012 Joseph 約瑟夫環 水題

poj1012 joseph description 有k個壞人k個好人坐成一圈,前k個為好人 編號1 k 後k個為壞人 編號k 1 2k 現在有乙個報數m,從編號為1的人開始報數,報到m的人就要自動死去 下乙個開始報數的為當前死去的下乙個開始 問當m為什麼值時,可以使得在出現好人死亡之前,k個壞人...

poj 1012 Joseph解題報告

題目鏈結http acm.pku.edu.cn judgeonline problem?id 1012 這題的大意就是2 k個人圍成乙個圓圈從1開始報數報到到m的殺死,要使得編號為k 2 k 1的k個壞人先被殺死,求滿足題意的最小的m 其中0最初的想法是模擬,完全模擬報號過程 include boo...

POJ 1012 約瑟夫問題

我是直接模擬的,因為實在想不到什麼好辦法,不過看到0 俗話說得好,不管黑貓白貓,抓到老鼠的就是好貓。於是在自家電腦模擬,打個表,就ac了。至於還有沒有其他方法,有待研究,大家有什麼好方法,請賜教,謝謝!1 模擬 方法是,m從2開始判斷,在1,2,3,2k中,每次找到第m個數,判斷如果是大於k的,那麼...