Description

由于众所周知的原因, 冈部一直欠真由理一串香蕉.
为了封上真由理的嘴, 冈部承诺只要真由理回答出这个问题, 就给她买一车的香蕉:
一开始有n 个人围成一个圈, 从1 开始顺时针报数, 报出m 的人被机关处决. 然后下一个人再从1 开始报数, 直到只剩下一个人.
红莉栖: “这不就是约瑟夫问题吗…”
伦太郎: “助手你给我闭嘴!”
真由理虽然已经晕头转向了, 但听到有一车的香蕉, 两眼便放出了光芒.
“那个呢, 真由氏很想要一车子的香蕉呢. 如果可以帮帮我的话, 我可以把一些香蕉分给你哟, 诶嘿嘿. 拜托你啦.”

Solution

递推公式:fn=(fn−1+m)modnf_n=(f_{n-1}+m)\mod n,
证明:每次干掉一个人,答案就与当人数为n-1时的答案有关,所以直接加上m即可;

但当n太大时就不行了,
优化:
适用于(n>m)时,
先暴力做前m个,
做到越后面,n越大,模起作用的次数就越少,
设现在做到now,答案为ans,
找到最小的k,使得:(模数起作用的地方)

ans+(k−now)m>=k

ans+(k-now)m>=k
移项:

now∗m−ansm−1≤k

\frac{now*m-ans}{m-1}\leq k
那么每次就跳这么多,很快就出答案了

Code

#include <cstdio>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define min(q,w) ((q)>(w)?(w):(q))
using namespace std;
typedef long long LL;
int read(int &n)
{char ch=' ';int q=0,w=1;for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());if(ch=='-')w=-1,ch=getchar();for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n,ans;
int main()
{freopen("mayuri.in","r",stdin);freopen("mayuri.out","w",stdout);int q,w,_;read(_);while(_--){read(n),read(m);if(m==1){printf("1\n");continue;}ans=0;q=min(n,m*10);fo(i,2,q)ans=(ans+m)%i;if(n>m)for(int i=q;i<n;){int t=((LL)i*m-ans)/(m-1);if(t>n)t=n;if(t<=i)t=i+1;ans=(ans+(t-i)*m)%t;i=t;}printf("%d\n",ans+1);}return 0;
}

【JZOJ 5421】【NOIP2017提高A组集训10.25】嘟嘟噜相关推荐

  1. JZOJ 5421. 【NOIP2017提高A组集训10.25】嘟嘟噜

    Description 由于众所周知的原因, 冈部一直欠真由理一串香蕉. 为了封上真由理的嘴, 冈部承诺只要真由理回答出这个问题, 就给她买一车的香蕉: 一开始有n 个人围成一个圈, 从1 开始顺时针 ...

  2. JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  3. JZOJ 5425. 【NOIP2017提高A组集训10.25】数论

    Description 聪明的0v0正在学习莫比乌斯反演. 她看到了这样的一道题:有n*m个人站成了一个n*m的方阵-- 剩下的题面,聪明的0v0不记得了.但是,她通过自己高超的数论技巧,给出了一个转 ...

  4. JZOJ 5422. 【NOIP2017提高A组集训10.25】天才绅士少女助手克里斯蒂娜

    Description Input 第一行两个整数n;m 表示电子个数和询问个数. 接下来n 行, 每行两个整数x; y 表示vi. 接下来m 行, 每行形如1 p x y 或2 l r, 分别表示两 ...

  5. 【JZOJ 5426】【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  6. JZOJ 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真

    Description Input Output Sample Input 5 1 4 2 5 1 4 1 1 2 4 Sample Output 2 1 4 Data Constraint Solu ...

  7. 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真

    这是一道DP题,然后做的时候发现,DP式子死活推不出来. 题目大意(本人实在是不想复制了呵-- 给出A,B序列 找出他们的最长公共严格递增子序列 明确,这是一道DP 所以设状态fi,jf_{i,j}f ...

  8. JZOJ5424. 【NOIP2017提高A组集训10.25】凤凰院凶真

    题解 题目的意思是求两个序列的最长公共上升子序列. 就此可以联想到求两个序列的最长公共子序列: 设fi,jf_{i,j}表示a序列处理到i,b序列处理j的最长公共子序列, 转移很简单. 现在要满足公共 ...

  9. 【NOIP2017提高A组集训10.25】摘Galo (树形dp)

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  10. JZOJ5426. 【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

最新文章

  1. 刚刚!美国官宣100000名 IT 人失业,感觉很慌 !
  2. 20162305 2016-2017-2《程序设计与数据结构》课程总结
  3. 04_Weblogic之受管服务器:配置受管服务器,启动受管服务器,解决因为强制关闭Weblogic之后导致启动有问题的问题,配置boot.properties
  4. MySQL高级 - InnoDB特性
  5. JVM-垃圾收集器与内存分配策略
  6. 5月 PC 浏览器市场份额:Chrome 即将突破 60%
  7. 文献学习(part39)--Cross-view semantic projection learning for person re-identification
  8. Mybatis 入门之resultMap与resultType讲解实例
  9. 浅析haartraining方法进行人脸检测
  10. Elasticsearch整理笔记(五)
  11. Scala 与设计模式(六):Bridge 桥接模式
  12. oracle 的“+”和“,”连接表的方式
  13. JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开
  14. mysql批量插入数据
  15. 线性代数 : 矩阵消元
  16. python应用学习(五)——requests爬取网页图片
  17. 【Matlab绘图要点汇总】Matlab图中添加图例+添加轴标签+添加文本+添加注释
  18. windows启动修复_如何使用Windows启动修复工具修复启动问题
  19. HTML5期末大作业:商城网站设计——仿天猫商城(9页) HTML+CSS大作业_ 网页制作作业_疫情防控网页设计...
  20. 12万字零碳智慧校园数字化节能监管管控平台建设方案2022

热门文章

  1. GridView自带分页 1/总页数 首页 下一页 上一页 尾页 X 页 go 实现方法
  2. 基于vue的nuxt框架cnode社区服务端渲染 1
  3. 【Linux】安装系统的时候遇到grub-install Error 问题的解决,超详细傻瓜式教程
  4. 阿里云香港服务器解析后域名无法访问
  5. 认识计算机系统授课计划,计算机网络技术基础授课计划.doc
  6. python累乘怎么写_python实现累乘multi函数(函数参数不限)
  7. 从Outlook到python都可以使您的工作减少一半
  8. php年龄计算器,js+html实现周岁年龄计算器
  9. IP-Guard准入控制网关实现机制
  10. 2017年西南民族大学程序设计竞赛-网络同步赛