蓝桥杯2021年第十二届省赛真题-双向排序 - C语言网 (dotcpp.com)

题解参考:

12届蓝桥杯省赛c++b组 I题 双向排序_thejohn2020的博客-CSDN博客_蓝桥杯双向排序https://blog.csdn.net/qq_51972900/article/details/116453220代码部分见上方题解。

根据题意,0是降序,1是升序;

显而易见的是,

1.当上一步操作是【0,a】,这一步操作是【0,b】,且 时,相当于b没操作,当时,相当于a的操作被覆盖掉了。两个 0降序 操作,只执行 更大的数 的操作。

例如:123456789这个序列,先执行【0,6】,序列变为654321789,后执行【0,4】,序列不变;先执行【0,4】,序列变为432156789,后执行【0,6】,序列变为654321789,相当于只要执行【0,6】;

2.当上一步操作是【1,a】,这一步操作是【1,b】,且 时,相当于a被覆盖,当时,相当于b被覆盖。两个 1升序 操作,只执行了 更小的数 的操作。

例如:987654321这个序列,先执行【1,6】,序列变为987651234,后执行【1,4】,序列变为987123456;先执行【1,4】,序列变为987123456,后执行【1,6】,序列不变;

3.如果第一个操作是【1,y】,原本就是升序,相当于没操作。所以开头遇到1操作就扔掉它。


那么,当0和1的交换操作时应该怎么办?

先不回答上面的问题,我们先看如下的这么一个情况:

Q:现在有【1,2,3,4,5,6,7,8,9】这样的序列,你遇到了如下操作命令(从上到下执行),请输出交换后得到的序列。

(0,9)
(1,1)
(0,7)
(1,4)
(0,6)

首先观察以下这些指令,第一条指令是【0,x】,0和1的指令是交替的,以0开头的指令是排列的顺序是降序的,以1开头的指令是升序的;

之后我们一步步来执行这些指令,

操作【0,9】:987654321

操作【1,2】:912345678

操作【0,7】:965432178

操作【1,4】:965123478

操作【0,6】:965321478

最终结果是:965321478

但是在一步步执行的过程中可以看到,因为操作【0,x】中的x在变小,操作【1,y】的y在变大,所以序列中数字不断能变化的区域是在变小的(紫色的区域是已经固定的部分,黑色的区域是还可以变化的部分)

那么,为什么紫色区域是已经固定的了?

前置信息:因为肯定是0操作开头的,1操作的前面肯定是0操作,所以每次到1操作时,最左边的部分肯定已经是逆序的了

先看左边那块紫色的已经被固定的部分,因为指令【1,y】中的y是不断变大的,所以 1操作 能把数字拉回来的 能力范围变小了,于是不在1的范围里面的数字(根据前置信息,这些数字肯定是逆序)就被留在了左边;

同理,指令【0,x】中的x不断变小,不在0的范围里面的数字因为0操作的前面肯定是1,所以右边那部分肯定是升序)就被留在了右边;

于是回到之前的问题,

当0和1的交换操作时应该怎么办?

——把【0,x】和【1,y】的操作命令按照先来后到的顺序x递减,y递增 ,下面是当前命令是x的情况,(y的情况同理):

如果 新来的 比之前来的(这里的是x1的上方的上方,因为0和1是交替排序的) ,那么它加入,如果新来的 比 之前来的x ,那么新来的【0,】向上找,直到【0,】成为第一条命令或者找到了比  还要大的,那么在【0,】的下方(这里的下方是【1,y】的位置,因为0和1是交叉排序的)的下方 插入【0,】,同时 【0,】下方的所有指令都被覆盖掉了。

例如把下面的操作排序成上面表格里的操作序列:

1 3
1 6
0 2
1 7
0 9
1 8
1 1
0 4
1 7
0 5
1 5
0 7
1 5
1 4
0 6

假设现在已经把命令全都排好了,要如何操作已经排好了的命令呢?

【0,9】:987654321

【1,2】:912345678

【0,7】:965432178

【1,4】:965123478

【0,6】:965321478

可以从这个例子中看到,如果当前是0操作,那么从右侧固定(从大到小还没有被固定的)数字,到【0,x】的x右边停下;如果当前是1操作,那么从左侧固定(从大到小还没有被固定的)数字,到【1,y】中y的左边停下;

如果操作命令都执行完了,中间的数字还没被填满,那么最后一条操作是0(降序),那么中间的数字从左往右填上从大到小的数字;最后一条操作是1(升序),那么从右往左填上从大到小的数字。

蓝桥杯2021年第十二届省赛-双向排序相关推荐

  1. 蓝桥杯2021年第十二届省赛-杨辉三角形

    蓝桥杯2021年第十二届省赛真题-杨辉三角形 - C语言网 (dotcpp.com)https://www.dotcpp.com/oj/problem2610.html 参考: 2021第十二届蓝桥杯 ...

  2. C++ | 蓝桥杯2021年第十二届卡片问题(源代码:C语言/C++/Python)

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

  3. 【蓝桥杯嵌入式】第十二届蓝桥杯嵌入式省赛程序设计试题以及详细题解

    原题展示     通读本试题后,可以知本试题所涉及到的模块有LCD显示.LED指示.按键切换.串口收发.定时器的PWM输出五个部分,试题的总体变化不大.在试题要求的所有功能中,串口这部分是侧重点,它既 ...

  4. 第十二届蓝桥杯2021年C++A组省赛题解

    文章目录 注 考生须知 试题A:卡片 试题B:直线 题解 代码(set + map) 试题C:货物摆放 题解 代码 试题D:路径 题解 代码 试题E:回路计数 题解 代码 试题F:砝码称重 题解 代码 ...

  5. 【蓝桥杯嵌入式】第十二届蓝桥杯嵌入式省赛客观题及详细题解

    题1 解析: 波特率,指每秒钟传输码元符号的个数,对符号传输速率的一种度量,单位为1baud/s. 由于串口只有高低电平之分,即1码元等于1bit,即波特单位1baud和1bit等效,因此,此时的波特 ...

  6. [蓝桥杯]2019年第十届省赛真题C/C++ B组 填空+大题

    第十届蓝桥杯省赛题目 填空A:组队 填空B:年号字串 填空C:数列求值 填空 D: 数的分解 填空 E: 迷宫 大题F:特别数的和 大题G:完全二叉树的权值 大题H:等差数列 大题I-后缀表达式 填空 ...

  7. 题目 2311: 蓝桥杯2019年第十届省赛真题-Fibonacci 数列与黄金分割

    题目 Fibonacci 数列是非常著名的数列: F[1] = 1,F[2] = 1, 对于 i > 3,F[i] = F[i − 1] + F[i − 2] Fibonacci 数列有一个特殊 ...

  8. 【STM32G4】备战蓝桥杯嵌入式---实战---第十二届嵌入式模拟赛

    文章目录 前言 一.题目 功能简述 二.模块初始化以及功能分析 1.模块的初始化 2.模块功能分析 三.函数实现 1.void Display(void); 2.uint8_t KEY_Scan(ui ...

  9. 蓝桥杯2019年第十届国赛真题-大胖子走迷宫

    题目 题目链接 题解 BFS. 整体思路:将位置信息和时刻信息放入队列,根据时刻信息判断当前时刻小明的大小,如果大小为1×11×11×1则不能原地停留,因为没意义啊,停留是为了让自己的肚子减小,但是1 ...

  10. 蓝桥杯2021届C++B组省赛真题 杨辉三角形

    分析: 1. 首先他要我们找第一次出现N的位置,我们可以发现杨辉三角是两边完全对称的,在右边出现的在左边一定先出现过,所以N只可能出现在左半边,我们将右半边删去 2. 这道题的数据规模特别大,那么我们 ...

最新文章

  1. 教育部:建设100+AI特色专业,500万AI人才缺口要补上!
  2. Codeforces Beta Round #11 A. Increasing Sequence 贪心
  3. jeecms内容管理系统使用了哪些技术
  4. Quartz.Net 学习之路02 初探Quartz.Net
  5. 材料成型计算机模拟第三版,材料成型计算机模拟实验报告模板学习.doc
  6. 单身的原因终于找到了!原来是这几个......
  7. Android中的savedInstanceState
  8. 一张网络路由器与能源路由器对照表(2015年)
  9. Unity 3D 入门小游戏 小球酷跑(上)
  10. 为出海掘金创造更多可能 助力开发者触达全球用户
  11. PHP执行底层机制-zend详解
  12. BLDC无刷直流电机
  13. Dreamweaver 8 时间轴及创建时间轴动画(转)
  14. [BJDCTF2020]Mark loves cat详细解法与思路
  15. 小米4电信4G_2014716_官方线刷包_救砖包_解账户锁
  16. oracle判断if函数,ORACLE判断奇偶数函数
  17. 解决IntelliJIdea许可证过期,输入许可证认证不成功
  18. bert-pytorch版源码详细解读
  19. 期货开户每日无负债结算制度
  20. C++的this指针【定义、用法、本质、特点】

热门文章

  1. 【蓝凌系统】如何使用数据中台进行省市县级联配置
  2. SQL Server的Descending Indexes降序索引
  3. R语言ggplot2 | 如何自定义facet分面的坐标轴范围
  4. 数字藏品即是风口也是风险!
  5. 虚拟机:TTL 传输中过期
  6. Windows中Python3.x下运行Python2.x程序解决方案
  7. 数据库的原理【经典】
  8. orcale中like用法详解
  9. cpu第几代计算机,怎么看cpu是几代的,来看看你的CPU是几代的?
  10. 常见光纤接头LC、FC、SC、ST