A

给出一个由 \(1,-1\) 组成的序列。一次操作可以让一个数变相反。

要多少次操作,才能让整个序列和非负且积等于 \(1\)。

大 氵题。

B

定义两个数 \(A,B\) 有一个价值:每一位上的数字的差的绝对值相加。(位数不足用前导零补齐)

给出区间 \(l,r\),问在 \([l,r]\) 内选两个数,最大的价值是多少。


找出 \(l,r\) 最大的相等前缀 \(k\)。

\(l,r\) 的最高位、次高位、第三高位、……、第 \(k\) 高位,都相等,而第 \(k+1\) 位不相等。

前 \(k\) 位一定都相等。我们让两数的第 \(k+1\) 位也不变,然后小数之后的位都选 \(9\),大数之后的位都选 \(0\)。

答案是 \(r_{k+1}-l_{k+1}+9\cdot (n-k-1)\)。

C

初始给出两个字符串。

Alice 和 Bob 轮番行动,Alice 先。

Alice 每次必须修改一个字符,Bob 每次必须挑一个字符串翻转。

可能在某次 Alice 或者 Bob 操作后,两个字符串相等了。游戏结束。

Alice 的目标是最小化这个游戏的回合数(Alice 和 Bob 各走一次算两回合)。Bob 的目标相反。

问:回合数最小化是多少?


把翻转过的字符串称作反字符串,没有翻转过/翻转抵消的字符串称作正字符串。

注意到最终匹配只有两种情况:两正字符串匹配,一正一反匹配。

分两种情况讨论即可。

D

每个学生都有一个学习区间 \([l_i,r_i]\)。初始所有手的高度为 \(0\)。

老师每次询问一个问题 \(x\),不限次数。每个问题至多询问一次

如果 \(x\) 在一个学生的学习区间中,则这个学生把手举高 \(1\) 单位;否则降低 \(1\) 单位。(高度可以是负数)

你现在就是老师,可以操控每次的询问。问:所有询问之后,手最高的学生和手最低的学生,高度差最大是多少?


考虑枚举手最高的学生和手最低的学生 \(a=[l_{high},r_{high}],b=[l_{low},r_{low}]\)。

那么最终的答案就是 \(2\times (|a|-|a\cap b|)\)。(所有 \(a\) 会 \(b\) 不会的问题个数,乘 \(2\) 是因为一个上一个下要两倍)

现在考虑对于每个区间 \(a\)(\(a\) 枚举),求出一个区间 \(b\) 使得 \(2\times (|a|-|a\cap b|)\) 最大,其实就是让交最小。

如果 \(b\) 被 \(a\) 包含,此时一定让 \(b\) 的长度最小。

如果 \(b\) 和 \(a\) 交错,且在 \(a\) 的左端点交错,此时一定让 \(b\) 的右端点越小越好。(当然,最好就是小到连 \(a\) 的左端点都够不上,此时交的长度为 \(0\))

如果 \(b\) 和 \(a\) 在 \(a\) 的右端点交错,此时让 \(b\) 的左端点越大越好。

容易发现,无论对于哪一个区间来说,我们都只需要找到 \(n\) 个中长度最小的区间、右端点最小的区间、左端点最大的区间。不可能出现区间 \(a_1\) 认为如果在包含的情况下,\(b\) 是最优的;但是 \(a_2\) 不这么认为。

问题:

如果 \(a_1\) 认为如果在包含的情况下,\(b\) 是最优的;但是 \(a_2\) 并不包含 \(b\)(交错),这个时候用 \(b\) 和 \(a_2\) 求答案,不就出错了吗?

并不会。因为这么做的答案肯定不会比我们另外两个交错情况下求出的区间,再和这个 \(a_2\) 求答案更优。这个题目只要求不漏掉,不要求不重复。

E

求出最小的数,使得它不能表示为给定序列中任何一个连续子串的最小公倍数。


容易发现,在左端点固定的时候,若右端点向右移动,则区间的 \(\operatorname{lcm}\) 值要么不变,要么至少乘 \(2\)。

而对于一个质数,它不可能成为任意两个与它不等的数的 \(\operatorname{lcm}\),而第 \(3\times 10^5+1\) 个是 \(4256233\),所以在所有区间的 \(\operatorname{lcm}\) 中,那些大于 \(4256233\) 的是没有用的。

因此,记 \(V=4256233\),则当左端点固定的时候,不同的有用 \(\operatorname{lcm}\) 只有 \(\log V\) 个。

考虑从右向左移动移动左端点,并且维护以当前点为左端点的不同 \(\operatorname{lcm}\)。

具体地,可以用两个 set \(A,B\) 分别维护当前存在的不同 \(\operatorname{lcm}\) 和所有可能有用的 \(\operatorname{lcm}\),左端点左移到 \(i\) 的时候,需要将 \(a_i\) 放入 \(A\),并遍历 \(A\) 中本来就存在的区间,对 \(a_i\) 取 \(\operatorname{lcm}\) 后重新放入 \(A\)。每次更新完之后,就把当前 \(A\) 中的元素放入 \(B\) 中。最后对 \(B\) 中的元素求 \(\operatorname{mex}\) 即可。

随机推荐

  1. 接口自动化测试复习巩固第二天,管理员后端验证和接口抓包+requests实现

    接口自动化测试第二天,需要用到的第三方库有os,openpyxl,json,pytest,requests 首选我们今天的目标是写出一个测试登录用例的脚本,这里我用的是分层设计,整个框架暂时被分为工具 ...

  2. 理解 docker volume

    1. docker volume 简介 文章 介绍了 docker image,它由一系列只读层构成,通过 docker image 可以提高镜像构建,存储和分发的效率,节省时间和存储空间.然而 do ...

  3. B2033 A*B 问题

    A*B 问题 题目描述 输入两个正整数 \(A\) 和 \(B\),求 \(A \times B\) 的值.注意乘积的范围和数据类型的选择. 输入格式 一行,包含两个正整数 \(A\) 和 \(B\) ...

  4. css : object-fit 兼容 ie 的解决方案

    通过 github 搜索 object-fit ie  ,  借鉴大佬兼容 ie 的经验. 下载解压到文件夹 , 打开测试目录 , 查看 demo 使用 ie 打开demo , 查看显示效果 : 代码 ...

  5. Oceanbase开源版 数据库恢复MySQL数据库的过程

    # Oceanbase开源版 数据库恢复MySQL数据库的过程 背景 想进行一下Oceanbase数据库的兼容性验证. 想着用app create 数据库的方式周期比较长. 所以我想着换一套 备份恢复 ...

  6. [转帖]Linux nice和renice命令:改变进程优先级

    https://c.biancheng.net/view/1074.html 当 Linux 内核尝试决定哪些运行中的进程可以访问 CPU 时,其中一个需要考虑的因素就是进程优先级的值(也称为 nic ...

  7. Oracle 高低水位线的学习

    Oracle 高低水位线的学习 背景 最近产品的一些脚本会大量的给一些流程表里面插入数据 因为只是一个流程相关没有时序查询的需求 所以数据量挺大, 但是按照石时间戳删除非常麻烦. 自己执行过多次del ...

  8. [转帖]Oracle安装 - shmmax和shmall设置

    https://www.cnblogs.com/ddzj01/p/16108010.html 一.概述 在Linux上安装oracle,需要对内核参数进行调整,其中有shmmax和shmall这两个参 ...

  9. [转帖]Docker:Python环境Docker镜像瘦身

    https://www.jianshu.com/p/c0ad13e0be85 关键字:Docker,Python 原始镜像 封装一个Python 3.7的环境并且安装Python依赖包实现一个机器学习 ...

  10. [转帖]浅谈redis采用不同内存分配器tcmalloc和jemalloc

    http://www.kaotop.com/it/173669.html 我们知道Redis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西.所以系统内存分配器的性能及碎片率会对Re ...