UVa 1394 约瑟夫问题的变形
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号位置,那么可以一直递推上去求出胜利者一开始所在的位置。
#include<iostream>
#include<cstring>
using namespace std; const int maxn = ;
int a[maxn]; int main()
{
int n, k, m;
while (cin >> n >> k >> m && n && k && m)
{
memset(a, , sizeof(a));
for (int i = ; i < n; i++)
a[i] = (a[i - ] + k) % i;
int ans = (a[n - ] + m) % n;
cout << ans+ << endl;
}
return ;
}
UVa 1394 约瑟夫问题的变形的更多相关文章
- UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...
- 【约瑟夫环变形】UVa 1394 - And Then There Was One
首先看到这题脑子里立刻跳出链表..后来继续看如家的分析说,链表法时间复杂度为O(n*k),肯定会TLE,自己才意识到果然自个儿又头脑简单了 T^T. 看如家的分析没怎么看懂,后来发现这篇自己理解起来更 ...
- UVA1452|LA4727-----Jump------经典的约瑟夫公式的变形(DP)
本文出自:http://blog.csdn.net/dr5459 题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&a ...
- UVa 1394: And Then There Was One
设置一个数组Winner记录经典约瑟夫问题中的剩余者即可递归解决该问题. 注: 约瑟夫问题:有编号为0~n-1的n个人,从0号开始报数1,2,3......报到k的杀死,然后从下一个人开始继续报数1, ...
- UVa 10048 - Audiophobia(Floyd变形)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- LA 3882 And Then There Was One[约瑟夫问题的变形]
And Then There Was One UVALive - 3882 Sample Input Sample Output //设f[i]为(原约瑟夫问题)第i次要删除的标号 #includ ...
- uva 10246(最短路变形)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28972 思路:spfa求出每个点到其余顶点的最短路(最短路上的每个 ...
- 最大边和最小边之差最小的生成树 UVA 1394
题目大意:给你n个点的图,求苗条度(最大边减最小编)尽量小的生成树 思路:sort以后暴力枚举区间即可 //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #inclu ...
- 紫书 习题 10-5 UVa 1213(01背包变形)
这里就是01背包多了一维物品个数罢了 记得不能重复所以有一层循环顺序要倒着来 边界f[0][0] = 1 #include<cstdio> #include<vector> # ...
随机推荐
- javascript photo http://www.cnblogs.com/5ishare/tag/javascript/
- WP8 学习 在APP.XAML中加入Resources
<Application.Resources> <local:LocalizedStrings xmlns:local="clr-namespace:test1" ...
- Problem A CodeForces 556A
Description Andrewid the Android is a galaxy-famous detective. In his free time he likes to think ab ...
- C/C++文件结构
总结者:kate (1).h 为头文件:存放 版权和版本声明,预处理块 ,函数和类结构声明 (2).cpp文件:代码文件,存放程序的实现 大都数时候,源文件和头文件是对应出现的,比如有一个A.cpp ...
- IntelliJ IDEA 12.0
User name:JavaDeveloper Serial number:92547-KY2BB-QZ0S1-PEZCV-HUT8Q-6RYY4
- Android-LogCat日志工具(二)
既然是Java语言,那么对于很多人来说,用System.out.println() 方法来打印日志是最熟悉.最简单不过了.不过在真正的项目开发中,是极度不建议使用 System.out.println ...
- Mainstoryboard
页面间进行跳转 [self performSegueWithIdentifier:@"signInSuccess" sender:self] signSuccess是miansto ...
- jQuery之load、unload、onunload和onbeforeunload
1.load:jQuery load() 方法是简单但强大的 AJAX 方法.load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法:$(selector).load(URL,dat ...
- (转)HTML5开发学习(3):本地存储之Web Sql Database
原文:http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416386.html HTML5开发学习(3):本地存储之Web Sql Data ...
- 图表控件Edraw Max免费下载地址
Edraw Max软件能使学生.老师和商务人士创建并发布各种设计图,它是一个集所有功能于一身的图表控件软件,它可以轻松地创建具有专业外观的流程图.组织结构图.网络图.商业演示图.建筑设计图.思维导图. ...