https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4140

本来是要昨天来写这学习代码的,然后昨晚寝室又断电了,忍不住在这里吐槽一下,嗯,寝室天天断电。

题意就是输入n,k,m三个数,n个数排成一个圈,第一次删除m,以后每数k个数删除一次,求最后一个被删除的数。

言归正传,以前写过一个链表的约瑟夫问题,但是在这里肯定是会超时的。后来看了些参考,终于明白了怎么做。

把n个数从0数组开始存入,第一次删除第m个数后,也就是数组下标为m-1的数被删去,此时把数组下标为m的数重新作为0号位置,重新组成一个环,那么此时下标为m的数的下标变为了0。

接下来就是逆推导的过程,x‘=(x+m)%n  。

用数组记录胜利者所在的位置,a[1]表示剩有一个人时胜利者所在的位置,a[2]就是剩有两个人时胜利者所在的位置,由上面可知,a[1]=0。

以后的每一次删除就是重复上一次的过程,最后留下的人一定处于0号位置,那么可以一直递推上去求出胜利者一开始所在的位置。

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4
 5 const int maxn = 10005;
 6 int a[maxn];
 7
 8 int main()
 9 {
10     int n, k, m;
11     while (cin >> n >> k >> m && n && k && m)
12     {
13         memset(a, 0, sizeof(a));
14         for (int i = 2; i < n; i++)
15             a[i] = (a[i - 1] + k) % i;
16         int ans = (a[n - 1] + m) % n;
17         cout << ans+1 << endl;
18     }
19     return 0;
20 }

转载于:https://www.cnblogs.com/zyb993963526/p/6131136.html

UVa 1394 约瑟夫问题的变形相关推荐

  1. UVA 1394 And Then There Was One 约瑟夫环数学方法

    题意: n个人围成环,首先第m个人出列,然后从下一个开始,数到第k个就出列...问最后剩下的是谁? 为了方便,我们采用0~n-1的编号方式 先考虑当题意没有m的时候,就是说从第一个人开始,第k个人出列 ...

  2. UVA 1471 Defense Lines (LIS变形)

    题意:删除原序列中的一段连续子序列,使得剩下的序列中存在一段最长连续子序列. 题解:LIS变形 我们用l[i]l[i]l[i]和r[i]r[i]r[i]记录往右以iii结尾和往左以iii开头的最长连续 ...

  3. Uva 10048 - Audiophobia (Floyd变形)

    题目链接 https://vjudge.net/problem/UVA-10048 [题意] 输入一个C个点,S个边(C<=100,S<=1000)的无向图,边权表示该路径上的噪声值,当你 ...

  4. 牛客--卡牌游戏 (概率DP 逆推) P2059

    题目链接:卡牌游戏 n个人,m张卡牌上有m个数字.庄家随机一张卡牌,数字为X,第X位出局,随后第X位的下一位做庄家,问,每个人最后获胜的概率是多少? 约瑟夫环的变形问题,这里每次等概率的抽牌,数字相对 ...

  5. uva 544(kruskal 变形)

    题意:在一张无向带权图中,求a-b的一条路经满足这条路径上的最小的边最大. 思路:仔细一看就能发现这不是最小瓶颈路的变形嘛,最小瓶颈路是让你求最大的边最小,这道题的意思就是反了一下,而且还是单组询问的 ...

  6. 12行代码AC——UVa 151 - Power Crisis(约瑟夫环)

    励志用尽量少的代码做高效表达. 提交(题目)链接-->UVa-151 题意 有n个电场,按约瑟夫环的规则断电,最后一个不断电,要求将最后一个断电的电场停在13号. 分析 约瑟夫环公式:f(N,M ...

  7. And Then There Was One POJ - 3517(变形约瑟夫环+规律)

    题意: 约瑟夫问题的变式.先指定第m个人必须死,然后每隔k个人死一个.求最后那个死的人的编号是什么. 题目 Let's play a stone removing game. Initially, n ...

  8. UVA 10074 Take the Land(最大子矩阵和变形)

    题目大意:输入矩阵,找出元素全为0的子矩阵的元素最大和. 解题策略:将0,1转换,动态规划中判断最长子区间和与当前列的大小的关系. /*UVA 10074 Take the LandAC by J.D ...

  9. C语言循环链表(不带头结点)解约瑟夫问题的一种变形

    一.问题描述 约瑟夫(Joseph)问题的一种描述是:编号为 1,2,-,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数),一开始任选一个整数作为报数上限 m,从第一人开始按顺时针方向 ...

最新文章

  1. 基于深度学习的图像分类Image classification with deep learning常用模型
  2. 11月上旬息壤网络域名总量呈负增长 份额跌破1%
  3. PHP的isset()和empty()比较
  4. Python 三级菜单
  5. Hibernate应用程序级可重复读取
  6. 容器编排技术 -- 使用Minikube在Kubernetes中运行应用
  7. java判断是否换行_如何检测java中的换行符
  8. Linux学习笔记五:arm-2009q3交叉编译环境安装、U盘拷贝文件到开发板
  9. 13.1Question Answering 问答系统意境级讲解
  10. windows idea Tomcat端口被占用
  11. 数据集下载地址(转)以下内容转自https://baijiahao.baidu.com/s?id=1615853849218131902wfr=spiderfor=pc
  12. 前端开发【WEUI框架H5网页开发】—— WEUI+Node.js+fis3 项目开发
  13. PropertyUtils.copyProperties复制对象失败
  14. SkeyeARS 超高清8K视频录像检索、 回放、控制解决方案
  15. PPT动态文字制作过程
  16. 【MySQL数据库设计与应用(四)】视图
  17. 200元左右的蓝牙耳机推荐,2021蓝牙耳机排行榜10强
  18. 我用过的最好脑图工具——Xmind(含安装包)
  19. 使用 Vite 插件自动化实现骨架屏
  20. ERTEC200P-2 PROFINET设备完全开发手册(8-1)

热门文章

  1. 剩余大学时光里要做的事
  2. (IOS)BaiduFM 程序分析
  3. Kendo Web UI Grid里时间格式转换
  4. 工具栏(UIToolbar)
  5. VS调试时断点无法进入或命中的原因及解决方法(PDB引发的)
  6. Zend Framework学习之Zend_Config
  7. with pdo mysql_如何在PHP下开启PDO MySQL的扩展
  8. 全系统动态污点分析-概要
  9. (98)Verilog HDL:流水灯设计
  10. c++ vector排序_个性化推荐系统源代码之基于LR模型的推荐系统离线排序方案