在學校寒假搞的演算法天梯中遇到的乙個joseph環的問題,題目如下。
題目的情景是乙個雙向的 joseph 環,n 個人看作 n 個結點,兩個老師分別沿兩個方向移動,把每兩個節點之間用雙向箭頭連線,圖大概長下面這個樣子。
這啟發我們可以構建乙個雙向鍊錶來模擬這個遊戲過程,人出列就等價於節點刪除,老師清點完移動就等價於指標移動到下乙個節點。需要注意的是在每次清點時,如果清點次數(k)大於當前人數(size),那麼 k 需要對 size 取模,因為每清點 size 次都會回到當前這個點,而且 k,m 的都是 int 的範圍,如果不取模很可能會超時。
#include
#include
using
namespace std;
int n,m,k,cnt;
int l[
30010
],r[
30010];
intmain()
int it1=
1,it2=n;
while
(cnt!=n)
else
it2=l[it2]
; cnt+=2
;}}return0;
}
誰是老大 一道類似Joseph環的智力題
這是乙個在面試中被問到的問題,其實細想起來很簡單。但當時只給了兩分鐘,沒能直接給出解決方案。有156個海盜在乙個島上,他們決定選乙個人出來做老大,由於人這麼多,選誰當老大一直沒有選好,於是他們想出來乙個辦法,把這156個人從1到156編號,然後按1,2,1,2,報數,報到1的退出選舉,剩下來的人繼續...
一道概率問題
題目 有一輛汽車有n個座位,編號為1 n,有n個人買票拿號上車,正常人按照自己的座位號對號入座,但是有乙個精神病患者,在空座位中隨機選擇乙個空著的座位就坐,正常人的座位如果被佔,也將隨機選擇乙個空著就坐,假如第乙個上車的是精神病患者,其他人都是正常人,問最後乙個人能坐到自己的座位的概率是多少?對於概...
一道遞迴問題
題目大意是 給定乙個字串a,然後給定多個單詞,然後根據給定的單詞在字串中插入空格,求插入空格最少的組合。例如給定字串ilikeeverything,給定單詞i like every thing likeeverything。輸出為i likeeverything。include include in...