隐藏页面特效

约瑟夫问题

1|0 约瑟夫问题


    N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。

    模拟整个过程或只输出最后一个人的编号

 

 参考百度约瑟夫问题

 

循环模拟全过程O(nm)

#include<cstdio> #include<cstring> using namespace std; const int N=1e6+10; int n,t; bool vis[N]; void deal(int m){ int tot=n; int p=0; for(int i=1;tot>1;i++){ if(i>n) i=1; if(vis[i]) continue; if(++p==m) p=0,vis[i]=1,tot--; } for(int i=1;i<=n;i++) if(!vis[i]){printf("%d\n",i);return ;} } int main(){ freopen("resist.in","r",stdin); freopen("resist.out","w",stdout); scanf("%d%d",&n,&t); deal(t); return 0; }

 

线段树模拟全过程O(nlog2n)

#include<bits/stdc++.h> using namespace std; #define N 30005 #define lc k<<1 #define rc k<<1|1 int n,k,a[N<<2]; void build(int k,int l,int r){ if(l==r){ a[k]=1;return ; } int mid=l+r>>1; build(lc,l,mid); build(rc,mid+1,r); a[k]=a[lc]+a[rc]; } int query(int k,int l,int r,int pos){ if(l==r){ a[k]=0;return l; } int mid=l+r>>1,ans; if(a[lc]>=pos) ans=query(lc,l,mid,pos); else ans=query(rc,mid+1,r,pos-a[lc]); a[k]=a[lc]+a[rc]; return ans; } int main(){ scanf("%d%d",&n,&k); build(1,1,n); for(int i=1,tmp=k;i<=n;i++){ printf("%d ",query(1,1,n,tmp)); if(i!=n) tmp=(tmp+k-1)%(n-i); if(!tmp) tmp=n-i; } return 0; }

 

 

递推只输出最后一个人的编号O(n)

 

#include<cstdio> using namespace std; int n,m,s; int main(){ freopen("resist.in","r",stdin); freopen("resist.out","w",stdout); scanf("%d%d",&n,&m); for(int i=2;i<=n;i++) s=(s+m)%i; printf("%d",s+1); return 0; }

 

 

 

 

 

 

 


__EOF__

本文作者shenben
本文链接https://www.cnblogs.com/shenben/p/12886429.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   神犇(shenben)  阅读(222)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2017-05-14 3944: Sum[杜教筛]
2017-05-14 [Sdoi2016]平凡的骰子
2017-05-14 [Sdoi2016]齿轮
2017-05-14 [Sdoi2016]硬币游戏
点击右上角即可分享
微信分享提示