OI养老专题03:让坏人出列的约瑟夫问题
问题是这样的:一共有2n个人,其中有n个好人,n个坏人。好人的编号是1~n,坏人的编号是n+1~2n。要求你求出最小的m(报数到m的人出局),让前n个出局的人都是坏人。
似乎除了暴力,我们想不出其它的什么办法来。而这题的数据范围......n<14!!!!!!!那就直接暴力好了(滑稽)
for(int i=;i<=n;i++){
ans[i]=(ans[i-]+m-)%(*n-i+);
if(ans[i]<n) i=,m++;
}
printf(",%d",m);
鬼知道它的复杂度是多少......不过就算是O(N3)也是可以过的,这题就给我们水过去了。
不过,这是正解吗?你看这个范围只有14,题目的变量也只有一个,这不是大喊着让我们打表过吗?所以为了rank,我打了个表......
#include<stdio.h>
#include<string.h>
int main(){
//freopen("poj1012 约瑟夫问题2.txt","w",stdout);
puts("#include<iostream>");
puts("using namespace std;");
printf("int ans[15]={0,2");
int ans[];
for(int n=;n<;n++){
int m=;
memset(ans,,sizeof ans);
for(int i=;i<=n;i++){
ans[i]=(ans[i-]+m-)%(*n-i+);
if(ans[i]<n) i=,m++;
}
printf(",%d",m);
}
printf("};\n");
puts("int main(){");
puts(" int n;");
puts(" cin>>n;");
puts(" cout<<ans[n];");
puts(" return 0;");
puts("}");
return ;
}
而且是那种直接交输出文件的打表程序(滑稽)
OI养老专题03:让坏人出列的约瑟夫问题的更多相关文章
- OI养老专题01:约瑟夫问题
有M个人,其编号分别为1-M.这M个人按顺序排成一个圈.现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然后又从下一个人开始又从1开始依次报数,数到N的人又出列...如此循环,直到最后一个人 ...
- OI养老专题02:约瑟夫问题求幸存者
如题.人数为n(1<=n<=30000),共k(1<=k<=30000)组数据,所报的数m恒为2,只要求输出幸存者. 如果你还不知道什么是约瑟夫问题...——https://w ...
- 打破传统天价SAP培训,开创SAP师徒之路,经验丰富的老顾问带徒弟 qq群150104068
SAP领航社区,开设了一个导师性质的师徒圈子,类似大学导师带研究生,导师给学生安排课题.分配任务.分享资料,让学生自学提高.我们的教学方法是以自学为主.辅导为辅助,在实践中积累经验掌握原理.主要方向A ...
- hdu1443(约瑟夫环游戏的原理 用链表过的)
Problem Description The Joseph's problem is notoriously known. For those who are not familiar with t ...
- joseph-约瑟夫环问题
约瑟夫环运作如下: 1.一群人围在一起坐成环状(如:N) 2.从某个编号开始报数(如:K) 3.数到某个数(如:M)的时候,此人出列,下一个人重新报数 4.一直循环,直到所有人出列,约瑟夫环结束 关于 ...
- 用ArrayList(解决约瑟夫问题)
约瑟夫问题(Josephus problem)又称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,约瑟夫问题类似问题又称为约瑟夫环."丢手绢问题". 据 ...
- Josephus problem(约瑟夫问题,丢手绢问题)
约瑟夫问题 约瑟夫环问题是一个数学应用题:已知n个人(以编号1,2,3.....,n)围坐在一张圆桌的周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列 ...
- 正睿OI国庆DAY2:图论专题
正睿OI国庆DAY2:图论专题 dfs/例题 判断无向图之间是否存在至少三条点不相交的简单路径 一个想法是最大流(后来说可以做,但是是多项式时间做法 旁边GavinZheng神仙在谈最小生成树 陈主力 ...
- ACM&OI 基础数论算法专题
ACM&OI 基础数学算法专题 一.数论基础 质数及其判法 (已完结) 质数的两种筛法 (已完结) 算数基本定理与质因数分解 (已完结) 约数与整除 (已完结) 整除分块 (已完结) 最大公约 ...
随机推荐
- python之cookie, cookiejar 模拟登录绕过验证
0.思路 如果懒得模拟登录,或者模拟登录过于复杂(多步交互或复杂验证码)则人工登录后手动复制cookie(或者代码读取浏览器cookie),缺点是容易过期. 如果登录是简单的提交表单,代码第一步模拟登 ...
- vue-video-player集成videojs-contrib-hls实现.m3u8文件播放
// 安装依赖 npm install vue-video-player --save npm install videojs-contrib-hls --save // 在main.js中全局引入 ...
- VBS教程
Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子 ...
- springmvc映射html文件以及解决乱码问题
<servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.html</u ...
- gets()的替代问题
gets()的替代方法 1.<iostream>中getline (char* s, streamsize n) 2.scanf("%[^\n]",s);
- PostgreSQL自学笔记:3 数据库的基本操作
3 数据库的基本操作 3.1 创建数据库 3.1.1 使用对象浏览器创建数据库 [Server] -> PostgreSQL 9.6 -> 数据库,右击 -> 创建 通常: 数据库: ...
- Android的BroadcastReceiver组件
BroadcastReceiver的作用: BroadcastReceiver,是和Intent有很大关系的Android组件. Android中的 Intent 可以用来: 1. 在应用程序内部和应 ...
- lArea.js 城市选择
http://blog.csdn.net/libin_1/article/details/50689075 lArea.js
- Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1 背景 系统中需要批量生成单据数据到数据库表,所以采用 ...
- Mac_IntelliJ IDEA For Mac 快捷键
Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...