动态规划 线性dp 区间dp 树形dp 线段树优化 前缀和优化 单调队列优化 滚动数组优化内存 (状压dp,数位dp,斜率优化,矩阵乘法加速) 数据结构 堆 栈 队列 双向链表(约瑟夫环) 树状数组 线段树 (树剖,主席树,平衡树,树套树,kd tree,动态树) 图论 MST 最短路 Tarjan ...
分类:
其他好文 时间:
2017-11-25 11:16:28
阅读次数:
160
约瑟夫环 f[i]表示有i个人先处理第k个人,最后被处理的人是谁 ...
分类:
其他好文 时间:
2017-11-20 01:19:09
阅读次数:
210
约瑟夫环变式 设f[i][j]表示处理i个人,按照处理顺序,倒数第j个人是谁 则有f[i][j]=(f[i-1][j]+k)%i ...
分类:
其他好文 时间:
2017-11-20 01:07:35
阅读次数:
143
方便求解最后的胜利者同时也适合打印 出列 序列的,时间复杂度O(N). 下面方法借鉴自Java程序练习-约瑟夫环问题 在有时候需要知道出列的序列,上述System.out部分就是出列序列 首先我们通过思考可以得到一个很显然的结论,n个人时的获胜者和这n个人淘汰掉一个人继续游戏下的获胜者一定是同一个人 ...
分类:
其他好文 时间:
2017-11-18 11:14:54
阅读次数:
114
有关约瑟夫环的问题一般需要考虑重标号,就是上一个被砍的人后面那个人开始重新0,1,2...这样子标 p[i][j][k]表示第i轮,原来编号为j(0->n-1)的人的新的编号为k的概率 ...
分类:
其他好文 时间:
2017-11-07 22:01:33
阅读次数:
143
#include <iostream>#include <stdlib.h>using namespace std; typedef char ElemType;typedef struct LNode{ ElemType data; //数据域 struct LNode *next; //指针域} ...
分类:
编程语言 时间:
2017-11-04 16:28:49
阅读次数:
160
约瑟夫问题的变形 看了网上的题解,这题有一个trick就是每轮删完点后将剩下的点重新编号,从0编到n-1。 这样操作之后,我们就可以对删点前后的两个状态进行递推了。 假设我现在有一排点,编号为0到n-1,现在我从0开始数k个删掉第k个点,也就是删掉点k-1。 剩下的点为0,1,2……k-2,k……, ...
分类:
其他好文 时间:
2017-10-30 15:59:01
阅读次数:
193
N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。 例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。 N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数 ...
分类:
其他好文 时间:
2017-10-19 21:11:20
阅读次数:
276
P1996 约瑟夫问题 (什么?!要给学弟学妹讲约瑟夫问题?!难道就不怕我给他们讲错了吗?! 啊啊啊,为了不给学弟学妹们讲错,蒟蒻表示要临阵磨一下刀、、、) 题目背景 约瑟夫是一个无聊的人!!! 题目描述 n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报 ...
分类:
其他好文 时间:
2017-10-15 14:19:51
阅读次数:
137
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 #include<stdio.h>#include<malloc.h>typedef stru ...
分类:
其他好文 时间:
2017-10-10 20:40:00
阅读次数:
135