约瑟夫问题变形 And Then There was One, LA 3882 递推 动态规划
来源:互联网 发布:手机知乎怎么上传图片 编辑:程序博客网 时间:2024/05/21 09:44
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31134#problem/B
问题的大意是有n个数编号依次为1~n构成一个圈,第一次去掉编号为m的数字,以后没数到k把该数字去掉,问最后剩下什么数字。
此题的解法是动态规划,递推。标准的约瑟夫问题是0~n-1的n个数从零开始,每数到k就把该数字去掉,随后剩下什么数字。
我们可以将该题化为标准的约瑟夫问题。假设有n个数字的标准约瑟夫问题,编号为0~n-1,第一次去掉的数字是(k-1)%n,则剩下的数字是 k%n, k%n+1 n%k+2,...,n-1,,,,k%n-2
我们作如下转换 设 k%n=a,则有 a,a+1,a+2,。。。,n-1,0,1,2,3,。。。,a-2。 a->0, a+1->1, a+2->2, a+3->3,..., a-2->n-2. 变换的公式是 f(x)=(x+k)%n则问题转化成了规模为n-1的标准约瑟夫问题。由于问题的特殊性,本题在最后一次变化的时候是数到m因此在计算最后一次的时候,要把m赋值给k再计算。代码如下。
#include<iostream>using namespace std;#define MAXN 100001int f[MAXN];int main(){int n,k,m;while(cin>>n>>k>>m){ if(n==0&&k==0&&m==0)break; f[1]=0; for(int i=2;i<=n-1;i++) { f[i]=(f[i-1]+k)%i; } f[n]=(f[n-1]+m)%n+1; cout<<f[n]<<endl;}}
- 约瑟夫问题变形 And Then There was One, LA 3882 递推 动态规划
- LA 3882 - And Then There Was One 【约瑟夫环变形】
- LA 3882 And Then There Was One 约瑟夫变形 *
- 约瑟夫问题的变形(And Then There Was One,Japan 2007,LA 3882)
- 例26 约瑟夫问题的变形(And Then There Was One,Japan 2007,LA 3882)
- POJ 3517 And Then There Was One (递推,约瑟夫问题变形)
- LA 3882 And Then There Was One 递推
- LA 3882 - And Then There Was One(约瑟夫 递归)
- UVALive - 3882 And Then There Was One 约瑟夫的变形问题
- UVALive 3882--And Then There Was One+约瑟夫环问题变形
- LA-3882 And Then There Was One
- LA 3882 And Then There Was One
- UVALive 3882 And Then There Was One 约瑟夫环问题
- And Then There Was One +dp+约瑟夫环的变形
- POJ 3157 And Then There Was One【约瑟夫变形】
- UVA 1394 And Then There Was One(约瑟夫环变形)
- 1394 - And Then There Was One(约瑟夫问题变形)DP
- POJ 3517 And Then There Was One(约瑟夫环-递推or模拟)
- 第一周poj1845
- Tomcat正常启动后,报404错误
- 启动SSH-server出现错误。Package openssh-server is not available, but is referred to by another package.
- js中通过split函数分割字符串成数组
- repo
- 约瑟夫问题变形 And Then There was One, LA 3882 递推 动态规划
- 用RSA加密实现Web登录密码加密传输
- bsort
- Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件
- hdu 3571 N-dimensional Sphere 高斯消元
- android文件操作(基本囊括所有的文件操作了)
- 网站安全之XSS漏洞攻击以及防范措施
- 对短信群发行业的简单描述
- CODE 21: Path Sum