A

题意:你在数轴原点。有一个宝箱在 \(x\),钥匙在 \(y\)。每移动一单位,耗费 \(1\) 时间。你可以到了 \(x\) 然后抱着宝箱走,但是抱着宝箱走的总路程不能超过 \(k\) 单位。如果某时刻你、钥匙、宝箱在同一个单位上,就能开宝箱。问:最快要多久开宝箱?

要么是拿钥匙,向宝箱走;要么是去抱着宝箱,向钥匙走 \(k\) 单位,或者直接走到钥匙那里。两种情况取 \(\min\) 即可。

B

给定一个长 \(2n\) 的数组,将其分为 \(n\) 个 pair 表示 \(n\) 个点。定义 \(s_i\) 为第 \(i\) 个点与第 \(i+1\) 个点的曼哈顿距离,请最小化 \(\sum_{i=1}^{n-1} s_i\)。

显然,如果两个点之间插入一个两个坐标都在它们之间的点,答案不会变。

所以数组排序,让 \((a[1],a[2n])\) 作为第一个点,\((a[n],a[n+1])\) 作为最后一个点,答案就是它俩的曼哈顿距离。

C

题意:给出 \(n\) 个字符串(\(len\le 5\)),每个字符都是数字。问有多少对字符串拼起来之后,前半部分的数字和等于后半部分?(若拼起来不是偶数长度,忽略)

关注:给出的长度 \(\le 5\),直接枚举哪两种长度的字符串拼在一起,用个 \(map\) 记录就行了。

D

题意:给出一个长 \(n-1\) 的数组 \(b\),\(b_i=a_i\bigoplus a_{i+1}\)。要求能否构造一个数组 \(a\) 满足 \(b\),且 \(a_i\in [0,n-1]\)。

令 \(s_i=b_1\bigoplus\dots\bigoplus b_i\),则 \(s_i=a_1\bigoplus a_{i+1}\)。将 \(s_i\) 插入 01-Trie 中。

枚举 \(a_1:0\sim n-1\),查询此时 \(a_1\) 与哪个 \(s\) 异或最大,看这个最大值是否超过 \(n-1\):如果没超过,\(a_1\) 就决定好了,可以输出。

E

小 A 和小 B 在打牌,各有 \(n,m\) 张牌。每张牌有自己的攻击力和防御。小 A 先手。

一张牌 \(a\) 能打败另一张牌 \(b\),当且仅当 \(a.attack>b.defence\)。

每当对手打出一张牌,此时的人就必须打出一张能打败它的牌;否则此时的人就输了。当一张牌被打败,它会回到主人手中。

问当两人绝顶聪明,最终的结果是谁赢或者平局。

首先一个局面可以用正打出来的那张牌来代表。把一个局面抽象成一个结点,构建一张有向图。这已经是一个解法,但是是 \(O(nm)\) 的。因为边数是 \(O(nm)\) 的。

尝试优化边数。发现每次打出去的牌,一定是能击败对面的,防御值最高的牌。将两人的牌按攻击排序,求后缀防御最大值,再套一个二分,就可以求出每个人会使用哪张牌来击败对面的哪张牌。

此时的边数就被优化到 \(O(n)\) 级别了,一次 dfs 搞定。

复杂度 \(O(n\log n)\)。(排序、二分的复杂度)

F

定义一个长度为 \(n\) 的非负整数序列是 Fancy 的,当且仅当:

  1. \(\exists i \in [1,n]\),\(a_i\in[x, x + k - 1]\)。

  2. \(\forall i\in [2, n]\),\(|a_i - a_{i - 1}| \leq k\)。

多测,给定 \(n,x,k\),求有多少 Fancy 序列,答案对 \(10^9 + 7\) 取模。

\(1\leq n,k\leq 10^9\),\(0\leq x\leq 40\)。

直接求两个条件,很难;所以我们改为求满足第二个条件,但是违反第一个条件的个数。

由于第二个条件,所以 \(a\) 要么全部属于 \([0,x)\),要么属于 \((x+k-1,M]\),其中 \(M\) 代表上界,可以视为 \(10^{500}\)。

令 \(f(l,r)\) 为违反第一个条件、满足第二个条件、所有元素都在 \([l,r]\) 内的 \(\{a\}\) 的数量。则我们要求的就是 \(f(0,M)-f(0,x-1)-f(x+k,M)\)。

由条件二的做差,考虑将 \(a\) 转用差分数组表示。记差分数组为 \(\triangle\)。

记 \(cnt(l,r,\triangle)\):固定了差分数组为 \(\triangle\) 后,有多少个 \(a_1\) 使得 \(\{a\}\) 中每个元素都在 \([l,r]\) 之间。

则 \(f(l,r)=\displaystyle\sum_{\triangle}cnt(l,r,\triangle)\)。

随机推荐

  1. BTC-实现

    BTC-实现 Transaction-based ledger(比特币是基于交易的账本模式) Account-based ledger(以太坊是基于账户的账本模式) UTXO Unspent Tran ...

  2. Oracle官网下载软件需要登录Oracle账户问题

    问题描述 当我们在Oracle官网上下载JDK时,(JDK下载地址)系统会提示需要登录Oracle账户.对于没有Oracle账户的人来说,注册账户太繁琐. 没有账户怎么办??? 此处推荐一个靠谱的网站 ...

  3. 0xGame 2023【WEEK4】Crypto WP

    Danger Leak 查看代码 from random import * from secret import flag from Crypto.Util.number import * m = b ...

  4. [转帖]2024年正常使用windows XP之一:系统下载篇

    https://zhuanlan.zhihu.com/p/347764175 半夏:2024年正常使用windows XP之一:系统下载篇 半夏:2024年正常使用windows XP之二:补丁及运行 ...

  5. KVM命令行Clone虚拟机的快速处理

    KVM命令行Clone虚拟机的快速处理 背景 鲲鹏+银河麒麟的测试环境 想着可以使用 KVM的方式创建虚拟机 virt-manager 有个clone虚拟机的提示, 但是发现没有创建新存储卷下面的磁盘 ...

  6. TiDB的搭建与维护过程

    TiDB的搭建与维护过程 背景 总结一下TiDB的搭建以及简单维护过程. 目标: 简单快速的创建TiDB数据库,以及进行备份恢复等工作. TiDB 简介 TiDB(全称:Ti Distributed ...

  7. [转帖]Region 性能调优

    https://docs.pingcap.com/zh/tidb/v6.5/tune-region-performance 本文介绍了如何通过调整 Region 大小等方法对 Region 进行性能调 ...

  8. [转帖]修改jmeter内存配置(win&mac&linux)

    目录 一.背景: 二.win环境下修改jmeter内存 三.mac&linux环境下修改jmeter内存 四.验证内存是否修改成功 一.背景: 在进行大数据.高并发压测的过程性,有时会遇上JM ...

  9. [转帖]JAVA⽣态的微服务⽆侵⼊链路追踪

    https://v5.6-docs.rainbond.com/docs/v5.3/advanced-scenarios/devops/pinpoint/#pinpoint%E7%AE%80%E4%BB ...

  10. expect 的简单学习与使用

    背景 最近工作中总有很多重复的事项. 比较繁琐,想着能够简单一点是一点的角度 准备采用expect来建华部分工作量. 其实还可以使用其他方式来处理. 但是感觉expect还是能够简单明了的. 所以暂时 ...