新随笔-约瑟夫问题(pku 1012)

约瑟夫问题,我先查到了位置坐标公式:f[i]=(f[i-1]+m-1)%(n-i+1);然后看了discuss上《总结三点》帖子
1.要kill的人的位置公式p=(p+m-1)%rest+1
2.kill的位置<k就break,此时剩下的人rest等于k就成功
3.m不要递增,m是k+1的整数倍或者k+1的整数倍加1,这样会提高不少
第三点不明白,就让m递增了,超时。
后又查找第三点的原因,在ericxieforever的专栏找到了答案。
另外这一题要把结果打表后再输出,不然还会超时。
分析:先引入Joseph递推公式,设有n个人(0,...,n-1),数m,则第i轮出局的人为f(i)=(f(i-1)+m-1)%(n-i+1),f(0)=0;
依次我们可以来做测试,只要前k轮中只要有一次f(i)<k则此m不符合题意。
接下来我们考察一下只剩下k+1个人时候情况,那么依题意则这一轮出局的人要么在上一轮出局人的左边,要么就在右边,则必有m%(k+1)==0或1

转载于:https://www.cnblogs.com/183zyz/archive/2010/07/13/1776785.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值