摘要:
Description你肯定经历过太多太多的人同时上网吧?网络会变得非常,非常慢。为了解决这个问题,Ulm大学建立了一种机制:在高峰时段公平地断开某些城市的网络。德国的城市被随机地编号为1到n。Freiburg编号为1,Ulm编号为2,Karlsruhe编号为3,其他的也是完全随机的编号。然后数字m会被随机的选取,网络总是会先断开城市1的网络,然后每m个城市断开一个城市,并且从1到n不断循环,且忽略那些已经被断网的城市。比如,如果n=17,m=5,则网络断开的城市顺序为[1,6,11,16,5,12,2,9,17,10,4,15,14,3,8,13,7]。并且还要规定Ulm城市会被最后一个断开 阅读全文
摘要:
问题描述:n个罪犯被一群人追杀,为了不被敌人杀死,n个罪犯决定通过如下的方式自杀:手拉手围成一圈,并对每个人按顺序编号为:1,2,3,...,n。从1开始报数,报到k的那个人就自杀,再从自杀的下一个人继续从1开始报数,以此类推,我们能够知道最后幸存的那个人的编号吗?解决方法:通过DP能够在$O(n)$解决问题。首先我们需要递推式:设$f(n,k)$表示有n个人且报到k的人自杀的情况下,最后幸存的人的编号。\[f(n,k)=(f(n-1,k)+k - 1)\%n + 1\]其中 $f(1,k) = 1$。如果有 $n$ 个人且报到 $k$ 的人自杀时,第一个自杀的人一定是编号为 $(k-1) \ 阅读全文