约瑟夫问题是信息学奥赛中的一类经典且重要的题型,在平常的测试中屡屡出现。 通常题设可抽象为:一开始有 $n $个人围成一个圈, 从 $1 $开始顺时针报数, 报出 $m $的人被踢出游戏.。然后下一个人再从$ 1 $开始报数,直到只剩下一个人。 或者:曾经有个人在他身边,然而现在只剩他一个人。$Wh ...
分类:
其他好文 时间:
2019-10-05 16:06:11
阅读次数:
112
在古罗马人占领乔塔帕特后,39个犹太人与约瑟夫和他的朋友躲到一个洞中。39个犹太人决定宁死也不被敌人抓到,于是商定以一种特殊的方式自杀: 41个人排成一个圆圈,由第一个人开始报数,每报数到3的人就必须自杀,直到所有人都自杀身亡为止。 但是约瑟夫和他的朋友并不想死,那么请问,约瑟夫和他的朋友,应该怎样 ...
分类:
其他好文 时间:
2019-10-04 16:40:22
阅读次数:
272
什么是约瑟夫问题 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一 ...
分类:
编程语言 时间:
2019-10-02 16:34:27
阅读次数:
91
概念介绍 有同学想了解约瑟夫问题,今天它来了!直接进入主题,什么是约瑟夫问题?约瑟夫问题:N个人围成一圈,从约定编号为K的人开始报数,第M个将被杀掉,依次类推,最后剩下一个,其余人都将被杀掉。 直接上图展示,初始化状态: 假设n=6,总共有6个人,k=1,从第一个人开始报数,m=5,每次数五个。 第 ...
分类:
其他好文 时间:
2019-09-23 00:11:02
阅读次数:
123
本题为经典约瑟夫问题。 有约瑟夫经典公式:ans[i]=(ans[i-1]+m)%i表示i个人报数,最终胜利者的编号。 本题与原本约瑟夫问题的不同点在于共有2k个人,要杀掉后k人保留前k人。而原约瑟夫问题为杀掉除自己外的所有人。所以在写代码时应注意。 ...
分类:
其他好文 时间:
2019-09-13 15:44:59
阅读次数:
59
题意 经典的 约瑟夫问题 $n$个人标号为$0...n 1$排成一圈,由第$0$个人开始报数,报到$k$的人~~去世~~ 求最后一个活下来的人是谁 解法 解法$0$:模拟算法$O(n^2)$ 链表模拟删除即可 入门题 解法$1$:线性算法$O(n)$ cpp int res = 0; for (in ...
分类:
其他好文 时间:
2019-09-02 14:06:22
阅读次数:
69
"也许更好地阅读体验" $\mathcal{Description}$ 经典的约瑟夫问题 一开始有 $n$ 个人围成一个圈,他们的编号从$0$到$n 1$, 从 $1$ 开始顺时针报数, 报出 $m$ 的人被机关处决. 然后下一个人再从 $1$ 开始报数, 直到只剩下一个人. 问最后剩下的人的编号. ...
分类:
其他好文 时间:
2019-09-01 18:42:49
阅读次数:
101
心得: 对于自己不确定会T多少的代码,一定不要瞎改,不要把自己之前的代码盖掉 题解: T1 读懂题后,sort+unique T2 一个裸的约瑟夫问题??然而垃圾的547并不知道约瑟夫是个什么,于是打了个队列模拟,从T10一直改到T60,然后被自己最后sb地给盖了 T3 很强的一道题 对于mod是非 ...
分类:
其他好文 时间:
2019-08-28 18:45:47
阅读次数:
106
今天考试T2挂了(众人皆A我独挂),于是写一个关于约瑟夫类问题的心得。 约瑟夫问题:n个人(编号1~n),从1开始报数,报到m的退出,剩下的人继续从1开始报数。按顺序输出列者编号 参图示。 模拟是$O(nm)$的,然后我就死了。n,m给到1e8。 做这么多年题大体上发现,如果你的解法超时,多半是因为 ...
分类:
其他好文 时间:
2019-08-27 12:41:20
阅读次数:
56
链表图解 带头结点的链表: 不带头结点的链表: 区别 带头结点的链表容易代码实现 不带头结点的容易实现循环链表和双向链表 代码的实现 (增减 删除) 节点实现: 链表实现: 链表的应用 :约瑟夫问题的求解 问题描述:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39 ...
分类:
编程语言 时间:
2019-08-26 09:19:01
阅读次数:
96