Contents
Problem
給定 m ,學生繞成一圈,找出一個 k 使得所有學生經過剔除後(取小的),最後剩下的位置為 m。
學生有 100 人從 1 ~ 100。
從 1 開始,順時針數 k 個,第 k 個移除,接著從順時針的下一個開始。
逆時針數第 k 個,移除,再來從逆時針的下一個開始順時針數。
如此順逆交替著做,直到剩下最後一人。
ex.
如果學生數為 10 人,k = 3,剔除的順序為: 3, 1, 4, 10, 5, 9, 6, 8, 7
Solution
因為 k 給定在 1~1000 ,直接暴力模擬 k 為 1~1000 時,最後剩下的是 x ,然後建表 ans[x] = k
。
(記得 k 要取最小 和 index 的處理)
Morris 有用狀態壓縮什麼的加速,但我想我就到此為止了…
Code
1 |
|