xdoj 1009线段树求约瑟夫环
线段树,顺便给自己当线段树模板
#include<bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define N 200005
int tree[N*4][2];
int sum[N*4];
void push(int rt)
{sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
void build(int l,int r,int rt)
{tree[rt][0]=l;tree[rt][1]=r;if(l==r){sum[rt]=1;return;}int m=(l+r)>>1;build(lson);build(rson);push(rt);
}
int update(int s,int rt)
{sum[rt]--;if(tree[rt][0]==tree[rt][1]){sum[rt]=0;return tree[rt][0];}if(s<=sum[rt<<1])return update(s,rt<<1);else return update(s-sum[rt<<1],rt<<1|1);
}
int main()
{int n,m;while(~scanf("%d %d",&n,&m)){build(1,n,1);int temp=1;int pos;for(int i=1;i<=n;i++){temp=(temp+m-1)%sum[1];if(temp==0) temp=sum[1];pos=update(temp,1);if(i<n)cout<<pos<<" ";else cout<<pos<<endl;}}
}
xdoj 1009线段树求约瑟夫环相关推荐
- 牛客多校6 - Josephus Transform(线段树求k-约瑟夫环+置换群的幂)
题目链接:点击查看 题目大意:给出一个长度为 n 的排列,初始时为 1 , 2 , 3 ... n - 1 , n,现在有 m 次操作,每次操作表示为 ( k , x ) ,即进行 x 次 k-约瑟夫 ...
- 程序员面试系列——约瑟夫环
约瑟夫斯问题(Josephus Problem) 约瑟夫斯问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为"约瑟夫环",也 ...
- # R语言——约瑟夫环
约瑟夫环: n个人围成一个圈,从第一个人点名,每数到第三个人,这个人移出圈外, 依次类推,求最后留下来的人编号是? 思路:每次循环重新编码序号作为names,并根据names 进行筛选 拓展:约瑟夫环 ...
- 7-28 猴子选大王 (20 分),从中学习约瑟夫环
一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数.如此不 ...
- java 实现约瑟夫环
这一次是借鉴模仿别人写的代码,以前觉得不好将数据结构的链结构什么的迁移到java上来使用,但这一次确实让我感受到了可以自己构造数据结构,然后使用类似链的方式来解决约瑟夫环,有所顿悟.不多说,继续上代码 ...
- HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)
链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...
- poj 1151(线段树求面积并)
解题思路:线段树求面积并,水题 #include<iostream> #include<cstdio> #include<cstring> #include< ...
- hdu 2461(线段树求面积并)
题意:给出N个矩形,M次询问 每次询问给出R个,问这R个矩形围成的面积 解题思路:对于每次询问,做一次线段树求面积的并操作. 每个节点保存的信息有l,r,cover,len分别表示该节点表示的区间[l ...
- 约瑟夫环数据结构c语言程序,数据结构的C语言(类C语言)--单向循环链表--约瑟夫环...
代码区 约瑟夫环:用类C语言实现!!!可以成功运行!!!不是仅仅的算法,而是实实在在的类C #include #include typedef int ElemType; typedef struct ...
最新文章
- AtlasControlToolkit.CascadingDropDownNameValue自定义用法
- CTF(pwn)-格式化字符串漏洞讲解(一)
- Spread for Windows Forms快速入门(2)---设置Spread表单
- 计算机应用能力文字录入,2017全国专业技术人员计算机应用能力考试题库-Excel,Word,XP.pdf...
- zigbee板子:lcd显示汉字
- CentOS配置syslog发送到服务器
- GNU Emacs的终极扩展管理工具 — el-get
- Your Bitbucket account has been locked. To unlock it and log in again you must solve a CAPTCHA.
- 万字长文详解二叉树算法,再也不怕面试了!| 技术头条
- sftp日志文件定时下载到本地文件 python 3
- 西门子step7安装注册表删除_不用重装系统就能完全卸载西门子PLC编程软件STEP 7...
- 算法笔记二分查找问题1
- linux编译一直失败,linux编译安装时常见错误解决办法
- httpwatch11.1---专业版
- .net mysql参数化查询_MySQL参数化查询的IN 和 LIKE
- nginx新增conf文件
- 锂离子电池种类介绍和分类
- (记录)golang获取mongo的ObjectId
- 保研之旅5:上海科技大学信息学院夏令营
- 如何绘制好看的大脑皮层图?wb_view +fun.gii格式操作
热门文章
- Go 学习笔记(62)— Go 中 switch 语句中的 switch 表达式和 case 表达式之间的关系
- 【Docker】Ubuntu18.04国内源安装Docker-准备工作(一)
- 【Design pattern】设计模式思路总结(三)
- NLPML_总结_20210208
- pytorch利用多个GPU并行计算多gpu
- 全面理解Python中的类型提示(Type Hints)
- LeetCode简单题之基于排列构建数组
- LeetCode简单题之Fizz Buzz
- Vitis-AI集成
- 兑换量子计算机,阅读 | 【量子计算机】构造置换量子门