传送门:点击打开链接

题意:输入n。m,x。刚開始有一个1~n的排列。然后定义了一种操作。是将数组中的偶数位数字选出来,依照顺序放到数组最前面,奇数位依照顺序放到偶数位的后面,进行m次这种操作。输出之后前x个数字

思路:找到循环节T,利用T去约m,然后再将非常小的m拿去模拟,输出前x个

一開始就想到找循环节,,刚開始仅仅想到去用找规律的方法去找到通项公式,可是找了好久就是没找到。尽管感觉理论上肯定是有的T^T

可是找规律的时候发现了非常多特点:T一定小于等于n。还有就是最刚開始的时候数字1是在第一个位置。当数字1再次出如今第一个位置的时候,刚好就是一个循环节!

所以。我们仅仅须要模拟1的位置,一直模拟到1出如今第一个位置时,循环节就算出来了。复杂度O(n)。1的位置还是非常好模拟的,由于仅仅研究了一个数字而已,还是非常好找到递推式子的。

找到循环节T之后。我们令m=m%T.这样m就变成<=n的了。然后就能够再次模拟

接下来,我们对前x个数字,分别倒着模拟m次。由于如今的m<=n,所以复杂度O(xn),倒着模拟的公式也是非常好找的

最后看别人的代码才发现,,事实上模拟的时候。就是一个高速幂(fuck)

总之。还是有些感慨。有时候不一定模拟就非要找到通项公式。找到办法能在较短的时间内算出通项公式,这样也并不算差~

#include<map>
#include<set>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define FIN freopen("input.txt","r",stdin)
#define FOUT freopen("output.txt","w+",stdout)using namespace std;
typedef long long LL;
typedef pair<int, int> PII;const int MX = 1e5 + 5;
const int INF = 0x3f3f3f3f;int find_t(int n) {int p = 1, ret = 0;while(true) {ret++;if(p % 2) p = n / 2 + (p + 1) / 2;else p = p / 2;if(p == 1) return ret;}
}
int solve(int p, int n, int m) {for(int i = 1; i <= m; i++) {if(p * 2 <= n) p = p * 2;else p = (p - n / 2 - 1) * 2 + 1;}return p;
}int main() {int n, m, x;//FIN;while(~scanf("%d%d%d", &n, &m, &x)) {int t = find_t(n);for(int i = 1; i <= x; i++) {printf("%d%c", solve(i, n, m % t), i == x ?

'\n' : ' '); } } return 0; }

转载于:https://www.cnblogs.com/yxysuanfa/p/7197548.html

模拟 nbut1225 NEW RDSP MODE I相关推荐

  1. NBUT1225 NEW RDSP MODE I(快速幂,规律)

    题目: [1225] NEW RDSP MODE I 时间限制: 1000 ms 内存限制: 131072 K 问题描述 Little A has became fascinated with the ...

  2. NBUT1225 NEW RDSP MODE I(快速幂,规律):

    G - NEW RDSP MODE I NBUT - 1225 题意: ​ 给你三个数n,n,n,mmm,xxx.代表刚开始有1到n1 到n1到n刚好n个数,现在让你将序列变换mmm次,问你变换mmm ...

  3. NEW RDSP MODE I (模拟,循环节)

    题目链接:https://cn.vjudge.net/problem/NBUT-1225 [题意] 给一个1-n的序列,经过m次操作,输出前m个数字. 具体操作是把序列的偶数项按顺序提到奇数位的前面. ...

  4. NEW RDSP MODE I

    题目描述 Little A has became fascinated with the game Dota recently, but he is not a good player. In all ...

  5. NBUT 1225 NEW RDSP MODE I

    [1225] NEW RDSP MODE I 时间限制: 1000 ms 内存限制: 131072 K 问题描述 Little A has became fascinated with the gam ...

  6. 辽宁2010省赛NEW RDSP MODE I (思维,推导公式)

    我感觉这辈子是想不到了,看了大佬的题解,才知道自己有多菜. 翻译: 小A最近对Dota的比赛着迷,但他不是一个好球员.在所有模式中,rdsp模式在网上流行,在这种模式下,如果他得到奇怪的英雄,小A总是 ...

  7. NBUT1225-NEW RDSP MODE I

    NEW RDSP MODE I 时间限制: 1000 ms 内存限制: 131072 K 问题描述 Little A has became fascinated with the game Dota ...

  8. NBUT 1225 NEW RDSP MODE I(找规律)(快速幂)

    NEW RDSP MODE I 问题描述 Little A has became fascinated with the game Dota recently, but he is not a goo ...

  9. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

最新文章

  1. windows怎么下载安装python-windows下numpy下载与安装图文教程
  2. 视频在计算机中的存储
  3. 又一游戏大盗(完美世界、跑跑等)SysInfo1.dll
  4. python prettytable_让python的print变得更好看——prettytable和colorama
  5. Java锁之可重入锁介绍
  6. Git笔记(19) 生成SSH公钥
  7. python 向MySQL里插入中文数据
  8. 借助 OpenGL* ES 2.0 实现动态分辨率渲染
  9. RSF 分布式服务框架-传输协议层设计
  10. web_01Java ee实现登陆注册功能
  11. Python3.0 我的DailyReport 脚本(四)发送日报
  12. [转]How to change Atheros AR9285 MAC addr on Win7(Win7下更改Atheros AR9285 MAC地址)
  13. 【线性代数】详解正定矩阵、实对称矩阵、矩阵特征值分解、矩阵 SVD 分解
  14. Java堆栈的简单图示
  15. java 生成随机数 (Random函数)
  16. TAOUP初译稿:提交版本
  17. java nas smb_FreeNAS 02:深入 SMB 服务使用
  18. ppt中如何合并流程图_PPT流程图文件的合并
  19. oa系统用什么云服务器,oa系统怎么选云服务器
  20. 少儿编程Scratch学习教程3--帮助中心

热门文章

  1. 自己动手制作RPM包
  2. 第十三届蓝桥杯(Web 应用开发)线上模拟赛【第三题】(封装函数实现个人所得税计算器)
  3. 【unity插件】Rewired插件-unity3d实现主机、PC手柄震动Vibration
  4. ensp两个路由的配置(想对全世界说晚安 恰好你就是全世界)
  5. python二进制和图片转换
  6. 肽基脯氨酰异构酶底物:1926163-51-0,WFY-pSer-PR-AMC
  7. prologue:It's hard to name this article
  8. 项目管理(如何进行团队管理)
  9. 关于poi导出excel浏览器不下载的问题
  10. Professional SharePoint 2007 Web Content Management Development: Building Publishing Sites with Offi