模拟11
T1#
比较显然的约瑟夫环
考虑当前轮,设为第\(i\)轮死的人的编号是多少,应该为\((i-1)\%(n-i+1)+1\),这样可以\(O(n^2)\)的从开头到现在更新编号,考虑\(N^2\)的时间复杂度主要来自更新编号,但其实有用的只有一个,就是最后留下的那个,所以可以倒着推回去,可以倒着推的原因是这是一个环,可以以任意一个点为初始标号,假设最后剩下的人在第\(i\)轮的标号为\(x\),说明它距离\(1\)有\(x\)个单位,然后我们又知道\(i-1\)轮中谁死了,设为\(p\),那么当前人的编号在\(i-1\)轮应该是\(p+x\),超过了总人数就\(\%\)一下,因为第一个人是\(p+1\)号,推一下就有了,注意环的性质。
T2#
随便模拟
T4#
发现最后合法的答案是唯一的,所以维护答案的\(hash\)值就行。
作者: An_Fly
出处:https://www.cnblogs.com/anyixing-fly/p/13786899.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步