Joseph - acm.uva.305(约瑟夫环)

约瑟夫 (Joseph) -- ACM PKU 1012 解题报告 问题描述:The Josephs problem is notoriously known. For those who are notfamiliar with the original problem: from among n people, numbered 1, 2,. . ., n, standing in circle every mth is going to be ex 阅读详情
假设有2k个人围着一个圆桌坐着,前k个是好人,后k个是坏人 。现在开始,每m个人踢掉一个,比如有6个人,m=5,那么,被踢掉的人依次是5,4,6,2,3,1。现在要求,在踢掉第一个好人前,必需把所有的坏人踢掉,问,给定一个k,求满足这个要求的最小的m。

The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, ..., n, standing in circle every mth is going to be executed and only the life of the last remaining person will be saved. Joseph was smart enough to choose the position of the last remaining person, thus saving his life to give us the message about the incident. For example when n = 6 and m = 5 then the people will be executed in the order 5, 4, 6, 2, 3 and 1 will be saved.

Suppose that there are k good guys and k bad guys. In the circle the first k are good guys and the last k bad guys. You have to determine such minimal m that all the bad guys will be executed before the first good guy.

这个题目其实就是要求前k次踢掉的都是坏人,假设第i次踢掉的人是i,则i>k。根据题意,可以得到如下关系:
设 ai 是第i次踢掉的人在第i-1次踢掉后剩下的人中是第几个。那么

a(n) = [a(n-1)+m-1]mod(2k-n+1)
要求a(n) > k;n = 1,2,3,...,k
其中2k-n+1是第i-1次踢人后剩下的人数。

可以设计如下算法:
bool Joseph(int k, int m) // 这个算法确定对于给定的k,m是否满足上面的要求
{
    
int n;
    
for(n=1;n<=k;n++)
    
{
        a 
= (a+m-1)%(k2-n+1);
        
if(a == 0) a = k2-n+1;
        
if(a<=k && a>=1) return false;
    }

    
return true;
}

然后,我们注意到,第一次踢的人是 m%2k,我们要求 m%2k > k,也就是 m = 2k*r+h,h>k,那么就可以设计如下的算法找出最小的m:
for(r=0;;r++)
{
    
for(h=k+1;h<=2*k;h++)
    {
         m 
= 2*k*r+h;
         
if(Joseph(k,m)) goto end; // 找到m跳出
     }
}
end: 
POJ1012-Joseph 约瑟夫环问题 JosephTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 56986 Accepted: 21688DescriptionThe Joseph's problem is notoriously known. For those who are not familiar with the original problem: fro... 阅读详情

相关推荐

joseph约瑟夫环

m个人围成一圈,从第1个人开始报数,报到n的人出圈,再由下一个人开始报数,报到n的人出圈,如此下去,直到所有的人出圈为止。编写程序依次输出出圈人的编号。

UVA305 - Joseph(数论 + 打表)

UVA305 - Joseph(数论 + 打表) 题目链接 题目大意:约瑟夫环问题:n个人围成一圈,每次都淘汰第m个人,问最后一个幸存下来的人的编号。 这题的意思有点不一样,它规定前面的k个人是好人,后面的k个人是坏人(2 ∗ k形成环)。问最小的m是多少,能够先把后面的k个坏人淘汰再淘汰好人。 解题思路:这题有个递推式:ai = (ai - 1 + m - 1) %

1032

Joseph C++代码

Joseph算法~采用链表法实现,c++语言描述

UVA305 Joseph 题解

而询问次数并未注明,为了以防万一,我们可以先预处理出所有答案,对于每次询问,直接输出即可。不满足题意,直接跳过本次枚举。否则,就说明我们找到了最小且满足题意的数。,再求出现在出局的人的编号,如果这个人是好人,那么现在的。我们假设好人坏人都站成一排,好人的编号为。那么我们可以暴力枚举。这道题目是经典的约瑟夫问题,建议先做。为了使坏人都在好人出局之前出局,所以。

2301_76224755 的博客,一只 OIER,只会 C++。 891

josephes.c

约瑟夫问题的解。c语言编写 ,gcc编译通过。

前端开发学习--登录和注册页面设计(html和css,可完成两个页面点击切换)

今天学习了登录和注册页面的设计,主要是HTML和CSS部分,注册和切换采用了Js代码进行,后面将通过js进行填写内容的验证,进而可通过JSP跳转到Servlet进行DAO数据的校验,这属于后端部分了。 总体设计思路:整个页面设计可以分为主体(content)、头部(content-header)、内容(content-body)三个部分组成,其中是主体是根部,包含了头部和内容,头部和内容各自下设两...

weixin_43691879的博客 1万+

UVA 305 - Joseph(模拟)

UVA 305 - Joseph 题目链接 题意:前k个好人,后k个坏人,排成一个环,现在给一个步数m,按照约瑟夫环问题去走,保证杀光坏人,不杀到好人,求最小的m 思路:k最多14,直接枚举步数模拟即可 代码: #include #include int k, ans[15]; bool judge(int num, int k) { int now

Remilia's 1996

IFRS 9与CECL对比解析:跨国企业财务必须掌握的两种信用损失模型

本文深度解析IFRS 9与CECL两种信用损失模型的差异,帮助跨国企业应对财务合规挑战。从基础架构、数据治理到监管策略,详细对比三阶段模型与单一阶段模型的核心区别,并提供实施双轨制的实务建议,助力企业优化资本管理和税务筹划。

3c4x5z6v7b的博客 669

uva 305 - Joseph(暴力)

题目链接:uva 305 - Joseph 题目大意:给定n,表示2n个人进行约瑟夫环游戏,前n个人为好人,后n个人为坏人,要求一个步长k,保证n个坏人死前没有好人挂掉。 解题思路:枚举步长利用公式递推判断即可。 #include #include #include #include using namespace std; bool judge (int n, int

不慌不忙、不急不躁 1111

LED背光驱动电路解析:从MP3394芯片到液晶屏灯管控制

本文深入解析了以MP3394芯片为核心的LED背光驱动电路工作原理。从升压电路的能量转换到多路LED的均流控制,详细阐述了其作为液晶屏背光“大脑”的关键作用,并提供了黑屏、闪屏、亮度不均等常见故障的实战检修思路与排查方法。

agile9scrum的博客 824

分布式推理服务(策略:数据并行、张量并行、流水线并行、专家并行)技术分析

摘要:分布式推理突破单GPU内存和算力限制,支持大模型部署。四种核心策略包括: 数据并行:复制模型拆分数据,提升吞吐但内存效率低; 流水线并行:模型分阶段执行,支持超大模型但存在计算气泡; 张量并行:拆分层内矩阵运算,延迟低但通信开销大; 专家并行:动态激活MoE模型专家,计算高效但路由复杂。实际应用中常组合策略(如3D并行),需权衡模型规模、硬件条件与性能目标。

技术引领业务创新 946

uva 305 Joseph(约瑟夫环解+打表)

Joseph  The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, ..., n, standing in circle every mth is

不慌不忙、不急不躁 2068

深入STM32 USB OTG FS:从官方MSC例程到实战双存储设备移植全记录

本文详细解析了STM32 USB OTG FS在双存储设备开发中的实战应用,从协议栈底层机制到SD卡/SPI Flash同步挂载的实现。通过优化SDIO接口和SPI Flash驱动,结合USB MSC类的关键实现,提供了完整的解决方案和性能优化策略,适合嵌入式开发者参考。

weixin_28366475的博客 371

uva 305 Joseph

点击打开链接uva 305 思路: 数学+打表 分析: 1 传统的约瑟夫问题是给定n个人和m,每次数m次把当前这个人踢出局,问最后留下的一个人的编号 2 这一题是前k个人是好人,后面k个是坏人。现在要求最小的m使得没有一个好人被踢出去的情况下k个坏人都被踢出 3 按照传统的方法来分析的话,n个人的编号从0~n-1 第一次 a[1] = (m-1)%n; // 这里由于人的编号是0~n...

我是传奇 207

【以太网硬件六】1000base-T物理层编码究竟是怎么编的?

详述1000base-T物理层4D-PAM5的编码过程

highman110的博客 5325

【报错解决】OpenClaw 报错 EACCES: permission denied:安装权限不足

本文针对国产操作系统环境下使用 npm 安装 OpenClaw 时出现的 EACCES 权限错误,提供了专业解决方案。文章首先分析了问题本质是 npm 全局安装路径与 Linux 权限模型的冲突,然后给出三种解决方案:1)配置用户级 npm 全局目录(推荐);2)使用 nvm 管理 Node.js;3)临时使用 sudo(不推荐)。特别强调在企业环境中应避免使用 root 权限安装,并详细说明了如何正确设置用户级 npm 路径,确保符合生产环境的安全审计要求。该方案同样适用于 OpenEuler、OpenC

博客 3191

HDU 1443 Joseph

Problem Description The Joseph\\\\\\\'s problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circ...

java开发指南博客 【转载】 302

用 CDS 作为 Referenced Data Source 开发 SAP Gateway OData 服务,一条更轻的 SEGW 路线

本文介绍了SAP Gateway项目中从传统手工建模到基于CDS View的现代化开发方式转变。主要内容包括: 传统方式需要在SEGW中手动创建Entity Type、Entity Set等元素,并在DPC_EXT中编写大量查询逻辑,存在模型层和业务逻辑重复表达的问题。 7.50版本后,SAP Gateway与ABAP CDS深度集成,可通过SEGW直接引用CDS View作为数据源,自动生成数据模型和SADL读取逻辑,支持完整的OData查询功能。 最佳实践建议通过Consumption View而非直接

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 707

ACM_CUGOJ_1012_Joseph Problem约瑟夫

Home Web Board ProblemSet Standing Status Statistics 阅读,思考,分享,K题。编程优化人生! Problem B: Joseph Problem Time Limit: 4 SecMemory Limit: 100 MB Submit: 348Solved: 137 [Submit][Status]...

晨起尘又落 789

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

UVa 305 - Joseph

题目:有2n个人,前n个是好人h

小白菜又菜 1496

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Uva305——Joseph

约瑟夫环问题。 #include using namespace std; int a[14]; int main() { int n; a[1] = 2; for(int i = 2; i < 14; i++) { for(int m = i + 1; ; m++) { int s = 0, j = 2 * i; while(1) { i

XD 882

Joseph

Problem Description The Joseph\\\\\\\'s problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circle every

叹久 543

uva 305(数学)

题目: The Joseph's problem is notoriously known. For those who are not familiar withthe original problem:from among n people, numbered 1, 2, ..., n, standing in circle every mthis going to be execut

俯瞰风景 925

UVa 305 / POJ 1012 Joseph (如何得到约瑟夫环的下一个位置?)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=241 注意代码中的递推式并不能指出实际的位置,但是要让m是满足题意的,这个位置(在减一映射后)必须>=k 当然你也可以打表实现。 /*0.079s*/ #include

AC,∑ndless 1235

UVA, 305 Joseph

题目:约瑟夫环模型,环长度为n,先输出的是后n/2个数字 注意:由题目可知,可能的环长为2-30,但每个计算量大,打表,否则超时 约瑟夫环是从自己开始数n个 #include #include #include #include #include #include #include #include using namespace std; void pack(vector

脚踏实地 595
上一篇: Google Reader
下一篇: MatrixPainting
xlvector
博客等级 码龄21年 64粉丝 71原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值