time limit: 1 sec
memory limit: 128 mb
submit: 83
solved: 6
submit
status
web board
即使tmk上了大學,tmk還是十分懷念以前的高中生活還有以前的小夥伴們。
tmk還記得在高考前幾天,tmk和他的小夥伴們參加了ht的生日party。在某個時間點,需要選出乙個唱歌的人,於是tmk提議說不如我們來玩一次約瑟夫問題吧。
我們有n個人排成一列,首先從頭到尾報數1,2,3…..n,報到m的倍數的人出列,接下來從尾到頭報數,報到m的倍數的人出列。直到人數小於m,這時再報一次數,報到1的人就被選出來唱歌。
現在問誰是出來唱歌的人
首先第乙個數t,t<=10,表示資料組數。
每組資料,第一行有兩個數,n和m(1<=n<=10000,1接下來有n行,每行乙個數x(1對於每組資料,輸出n行,每行乙個整數,第i行的整數表示第i個詢問的答案2
2 3 1
6 2 4 1
61 4
1 5【分析】先舉一些例子,當有 10 個人,數 3 個人就出隊我們只要找到小一點的每個數和當前數對應關係是什麼就可以了例如上圖,假設你下一輪 7 個人最後是第 5 個人存活的,那麼 10 個人最後是第 4 個同學存活的,你如果下一輪 7 個人最後是第 1 個人存活的,那麼 10 個人最後是第 10 個同學存活的,現在就是要找 c 陣列和 a 陣列的對應關係從 c 陣列先推到 b 陣列,再從 b 陣列推到 a 陣列設 a 陣列的個數為 n,那麼 b 陣列和 c 陣列就有 n-n/m 個數(/為整除)a[i]=b[i]+(b[i]-1)/(m-1)c[i]=b[(n-n/m)+1-i]這樣就很容易得到這 c 和 a 的關係設 f[n]表示 n 個人玩遊戲,倖存者為第 f[n]個人所以得到遞推式複雜度就是 o(n)的
#include #include using namespace std;
const int n = 1e6+7;
typedef long long ll;
int f[n];
int n, m;
int dfs(int x)
{ if(f[x]!=-1) return f[x];
if(x
ht的文章審查功能
雖然這個咚咚是在中國大環境下的無奈之舉,大家開小站自可不必管,不過研究 還是要研究透徹的,哼哼 發信人 s 拖泥帶水 play盜版pal3a ing 信區 bbsdev 標 題 文章審查功能的用法 發信站 數學學院公共論壇 thu nov 11 18 07 59 2004 本站 mathbbs.88...
老爸的生日
今天是老爸的生日,剛才打了30多分鐘的 以前很多時候是發簡訊的,打 問了他最近的情況,一切都好,好像特別精神,肯定有乙個原因,那就是女兒也考上大學了 談了下我的工作學習問題 最後談了他的工作,他說想要換個工作,那邊的工資高些,我知道那是榆林 陝西的北部 那是個環境比較惡劣的地方,風沙大 以前去過一次...
爸爸的生日
前天是老爸 60歲生日 一直也沒有給爸爸過過生日 決定從今年開始給爸爸過生日 於是昨天就從北京請假趕了回來 還算是比較順利,昨晚 23 20 就回到了家中 爸爸愛喝茶 專門買了一斤龍井 也算是盡盡孝心吧。早晨起來,媽媽就張羅買蛋糕,什麼時候出去吃飯的事情?本來說好中午去飯店給爸爸過生日,但媽媽又給兩...