牛客网暑期ACM多校训练营(第三场)  C   Shuffle Cards

题目:

链接:https://www.nowcoder.com/acm/contest/141/C
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld
题目描述
Eddy likes to play cards game since there are always lots of randomness in the game. For most of the cards game, the very first step in the game is shuffling the cards. And, mostly the randomness in the game is from this step. However, Eddy doubts that if the shuffling is not done well, the order of the cards is predictable!

To prove that, Eddy wants to shuffle cards and tries to predict the final order of the cards. Actually, Eddy knows only one way to shuffle cards that is taking some middle consecutive cards and put them on the top of rest. When shuffling cards, Eddy just keeps repeating this procedure. After several rounds, Eddy has lost the track of the order of cards and believes that the assumption he made is wrong. As Eddy's friend, you are watching him doing such foolish thing and easily memorizes all the moves he done. Now, you are going to tell Eddy the final order of cards as a magic to surprise him.

Eddy has showed you at first that the cards are number from 1 to N from top to bottom.

For example, there are 5 cards and Eddy has done 1 shuffling. He takes out 2-nd card from top to 4-th card from top(indexed from 1) and put them on the top of rest cards. Then, the final order of cards from top will be [2,3,4,1,5].
输入描述:
The first line contains two space-separated integer N, M indicating the number of cards and the number of shuffling Eddy has done.
Each of following M lines contains two space-separated integer pi, si indicating that Eddy takes pi-th card from top to (pi+si-1)-th card from top(indexed from 1) and put them on the top of rest cards.

1 ≤ N, M ≤ 105
1 ≤ pi ≤ N
1 ≤ si ≤ N-pi+1
输出描述:
Output one line contains N space-separated integers indicating the final order of the cards from top to bottom.
示例1
输入
复制
5 1
2 3
输出
复制
2 3 4 1 5
示例2
输入
复制
5 2
2 3
2 3
输出
复制
3 4 1 2 5
示例3
输入
复制
5 3
2 3
1 4
2 4
输出
复制
3 4 1 5 2

思路:

  rope可当做可持久化平衡树,适用于大量、冗长的串操作

 基本操作:

1)运算符:rope支持operator += -= + - < ==

  2)输入输出:可以用<<运算符由输入输出流读入或输出。

  3)长度/大小:调用length(),size()都可以哦

  4)插入/添加等:

  push_back(x);//在末尾添加x

  insert(pos,x);//在pos插入x,自然支持整个char数组的一次插入

  erase(pos,x);//从pos开始删除x个

  copy(pos,len,x);//从pos开始到pos+len为止用x代替

  replace(pos,x);//从pos开始换成x

  substr(pos,x);//提取pos开始x个

  at(x)/[x];//访问第x个元素

代码:

#include<cstdio>
#include<ext/rope>  //固定写法
using namespace std;
using namespace __gnu_cxx;  //固定写法
rope<int> ss;  //实质是可持久化平衡树int n,m;
int main()
{scanf("%d%d",&n,&m);for(int i=1; i<=n; i++) ss.push_back(i);  //放入元素(1~n)while(m--){int p,s;scanf("%d%d",&p,&s);ss = ss.substr(p-1,s)+ss.substr(0,p-1)+ss.substr(p+s-1,n-p-s+1); //重新组合三个区间 substr(起始位置,区间长度)
    }for(int i=0; i<n; i++){printf("%d",ss[i]);if(i==n-1)puts("");else printf(" ");}return 0;
}

转载于:https://www.cnblogs.com/longl/p/9381126.html

C Shuffle Cards相关推荐

  1. Shuffle Cards(Rope大法)将一段区间的数字整体搬动

    链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 Shuffle Cards 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2 ...

  2. 牛客网暑期ACM多校训练营(第三场): C. Shuffle Cards(splay)

    链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 题目描述 Eddy likes to play cards game since there ...

  3. 牛客多校3 C-Shuffle Cards(rope大法解决数组分块)

    Shuffle Cards 链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2 ...

  4. 【Java】 实现一副扑克牌,包含:洗牌+发牌(3个人,一人5张)+输出牌的信息 的逻辑

    import java.util.ArrayList; import java.util.List; import java.util.Random;class Card{private int ra ...

  5. c++自带的可持久化平衡树?rope大法好!(超详细解答 + 5道例题讲解,可直接替代可持久化的线段树、并查集、平衡树!)

    整理的算法模板合集: ACM模板 目录 c++自带的可持久化平衡树?rope大法好! 1. 声明 2. 支持操作 char类型的rope int类型的rope 3. 具体的细节 4. "可持 ...

  6. 【每日训练】2020/11/9(Splay ?rope大法好!、数论、构造补图)

    整理的算法模板合集: ACM模板 目录 1. 牛客Shuffle Cards 2.CF992B Nastya Studies Informatics 3.CF990D Graph And Its Co ...

  7. java08 Set

    Set: 无序不可重复,重复则覆盖,判断是不是重复也是通过equals方法判断的.HashSet和TreeSet,HashSet底层是HashMap.public static void main(S ...

  8. python项目超级大脑-python项目之超级大脑

    超级大脑 程序说明 我们已经为你准备了程序模板:memory.py,模板中导入了必要的模块和一些全局变量,你需要编写一些函数,实现这个游戏. 通过该项目你可以巩固对鼠标事件驱动编程,函数和列表的理解. ...

  9. Python编程基础:第二十八节 随机数Random Numbers

    第二十八节 随机数Random Numbers 前言 实践 前言 我们在编程过程中有时候需要用到随机数,例如模拟掷骰子,模拟抽签等等.Python为我们提供了random包帮助我们生成随机数. 实践 ...

最新文章

  1. java datetime now_相当于C#的DateTime.Now在Java中?
  2. java数组遍历赋值,最终入职阿里
  3. SkyWalking之高级玩法
  4. 区块链实现代码详细分析(Python)
  5. R - 一只小蜜蜂...(第二季水)
  6. Linux安装或升级openssh步骤和可能遇到的问题
  7. 自控matlab设计,自动控制原理课程设计--基于MATLAB软件的自动控制系统仿真
  8. windows10下载
  9. JavaScript高级程序设计读书笔记(一)
  10. TestNG执行测试方法依赖关系
  11. java imagemagick 接口_ImageMagick安装及使用教程
  12. 队列消息在html中怎么排列,Redis实现消息队列
  13. Vue的生命周期以及钩子函数
  14. jQuery post使用变量作参数名
  15. linux ubuntu/centos git 客户端编译安装升级
  16. SC7A20 三轴加速度传感器 驱动
  17. QCC3040---system state module
  18. 【学习OpenCV4】进度条实现总结
  19. 作为一名平面设计师,你必须知道的一些素材网站
  20. Excel 2010 VBA 入门 064 按照关键字批量创建超链接

热门文章

  1. Docker exec 命令执行出错, 显示 the input device is not aTTY 的解决办法
  2. MySQL优化建议汇总~~~
  3. python 删除特定行数据_怎么用 Python 做数据分析实例
  4. (set)计算集合的并
  5. python函数之作用域
  6. (STL,set)安迪的第一个字典
  7. php李捷,【问题解答】蝶泳手外划的作用
  8. python树莓派串口通信实例_树莓派通过串口发送数据
  9. java质数判断程序_java判断一个数是否为素数/质数
  10. 基于JavaWEB SSM SpringBoot婚纱影楼摄影预约网站设计和实现